From 91ad4fbcc8ecdd09d1f93422c220846db663c817 Mon Sep 17 00:00:00 2001 From: Vivek-Hotti Date: Mon, 8 Mar 2021 11:14:24 +0530 Subject: [PATCH 01/37] per_page paragraph removed --- content/rest/reference/activity.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/rest/reference/activity.md b/content/rest/reference/activity.md index d80553b6c3..ce3eed18cf 100644 --- a/content/rest/reference/activity.md +++ b/content/rest/reference/activity.md @@ -33,8 +33,6 @@ $ -H 'If-None-Match: "a18c3bded88eb5dbb5c849a489412bf3"' > X-Poll-Interval: 60 ``` -Events support pagination, however the `per_page` option is unsupported. The fixed page size is 30 items. Fetching up to ten pages is supported, for a total of 300 events. For information, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." - Only events created within the past 90 days will be included in timelines. Events older than 90 days will not be included (even if the total number of events in the timeline is less than 300). {% for operation in currentRestOperations %} From 28d7229f377f2c3fe87b6063e45fbbac9fb0b8b3 Mon Sep 17 00:00:00 2001 From: Stacy Carter Date: Mon, 8 Mar 2021 13:08:37 -0500 Subject: [PATCH 02/37] Update 5.yml Adding more information to describe the built-in auth bug. --- data/release-notes/2-22/5.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/release-notes/2-22/5.yml b/data/release-notes/2-22/5.yml index 6801ba1b04..3498f14906 100644 --- a/data/release-notes/2-22/5.yml +++ b/data/release-notes/2-22/5.yml @@ -11,7 +11,7 @@ sections: - 'The way SSH certificates were applied between Organizations and Businesses was inconsistent. {% comment %} https://github.com/github/github/pull/163423, https://github.com/github/github/pull/159538, https://github.com/github/authentication/issues/115 {% endcomment %}' - 'When an account was rate limited due to using incorrect passwords, it could be locked out for up to 24 hours. {% comment %} https://github.com/github/github/pull/163433, https://github.com/github/github/pull/162938, https://github.com/github/github-ds/pull/51 {% endcomment %}' - 'Pull request synchronization on repositories with many references could cause worker queues to fall behind. {% comment %} https://github.com/github/github/pull/163573, https://github.com/github/github/pull/163142 {% endcomment %}' - - 'When signing in after attempting to visit a specific page, people were sent to the home page instead of their intended destination. {% comment %} https://github.com/github/github/pull/163782, https://github.com/github/github/pull/163579, https://github.com/github/github/pull/154117, https://github.com/github/ecosystem-apps/issues/1076 {% endcomment %}' + - 'When signing in with a local username and password (built-in authentication) after attempting to visit a specific page, the user was sent to the home page instead of their intended destination. {% comment %} https://github.com/github/github/pull/163782, https://github.com/github/github/pull/163579, https://github.com/github/github/pull/154117, https://github.com/github/ecosystem-apps/issues/1076 {% endcomment %}' - 'For GHES instances using built-in authentication with an internal SAML identity provider, users without an associated email address could not create a commit from the web interface. {% comment %} https://github.com/github/github/pull/164009, https://github.com/github/github/pull/163530, https://github.com/github/github/issues/163524 {% endcomment %}' known_issues: - 'On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user. {% comment %} https://github.com/github/enterprise2/issues/1889 {% endcomment %}' From 836e2298baa145e5206f93a36b4b95dac58b2f37 Mon Sep 17 00:00:00 2001 From: Brian Mirlenbrink <5261444+mirlenbrink@users.noreply.github.com> Date: Wed, 10 Mar 2021 14:59:06 -0500 Subject: [PATCH 03/37] Grammar update in Outside collaborators section Small grammar update to Outside collaborators section to indicate possession by adding 's to "organization." I believe instead of "To keep your organization data secure..." it should be "To keep your organization's data secure...." --- .../permission-levels-for-an-organization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md index 54c5d401fb..cb15b03a45 100644 --- a/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md @@ -131,7 +131,7 @@ When you designate a user as a {% data variables.product.prodname_github_app %} ### Outside collaborators -To keep your organization data secure while allowing access to repositories, you can add *outside collaborators*. {% data reusables.organizations.outside_collaborators_description %} +To keep your organization's data secure while allowing access to repositories, you can add *outside collaborators*. {% data reusables.organizations.outside_collaborators_description %} ### Further reading From 3c33295845a41bd63ff5123dcb017e5ac56557ad Mon Sep 17 00:00:00 2001 From: Ichinose Shogo Date: Sun, 14 Mar 2021 20:19:11 +0900 Subject: [PATCH 04/37] fix an example in authentication-in-a-workflow actions/labeler now recommends to use the `pull_request_target` event. With the `pull_request` event, `GITHUB_TOKEN` sometimes lacks write permissions (e.g. pull requests from forked repository or from dependabot) and actions/labeler doesn't work well. ref. https://github.com/actions/labeler/pull/90 ref. https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/#improvements-for-public-repository-forks --- content/actions/reference/authentication-in-a-workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/actions/reference/authentication-in-a-workflow.md b/content/actions/reference/authentication-in-a-workflow.md index 8805da3d9f..eac1b060d0 100644 --- a/content/actions/reference/authentication-in-a-workflow.md +++ b/content/actions/reference/authentication-in-a-workflow.md @@ -40,7 +40,7 @@ This example workflow uses the [labeler action](https://github.com/actions/label ```yaml name: Pull request labeler on: - - pull_request + - pull_request_target jobs: triage: runs-on: ubuntu-latest From 5994a4f25efe59d4edd30c2c71a48c0bebbf6e76 Mon Sep 17 00:00:00 2001 From: bwestover Date: Mon, 15 Mar 2021 19:36:32 -0700 Subject: [PATCH 05/37] add 2.21.16 release notes --- data/release-notes/2-21/16.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 data/release-notes/2-21/16.yml diff --git a/data/release-notes/2-21/16.yml b/data/release-notes/2-21/16.yml new file mode 100644 index 0000000000..b29f6242a2 --- /dev/null +++ b/data/release-notes/2-21/16.yml @@ -0,0 +1,14 @@ +date: '2021-03-16' +sections: + security_fixes: + - Packages have been updated to the latest security versions. + bugs: + - Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error. + known_issues: + - On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user. + - Custom firewall rules are not maintained during an upgrade. + - Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository. + - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. + - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. + - Security alerts are not reported when pushing to a repository on the command line. + From 11af364167349edf5301492c8feadf41f4a2a6e6 Mon Sep 17 00:00:00 2001 From: bwestover Date: Mon, 15 Mar 2021 19:36:52 -0700 Subject: [PATCH 06/37] add 2.22.8 release notes --- data/release-notes/2-22/8.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 data/release-notes/2-22/8.yml diff --git a/data/release-notes/2-22/8.yml b/data/release-notes/2-22/8.yml new file mode 100644 index 0000000000..f5b3d0c0fd --- /dev/null +++ b/data/release-notes/2-22/8.yml @@ -0,0 +1,15 @@ +date: '2021-03-16' +sections: + security_fixes: + - Packages have been updated to the latest security versions. + bugs: + - Systemd journal logs were duplicated in multiple places. + - A site admin could get a 500 error page while trying to view issues referenced from private repositories. + - Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error. + known_issues: + - On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user. + - Custom firewall rules are not maintained during an upgrade. + - Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository. + - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. + - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. + From 3051487aee038890cd807954eb3b599de3577f03 Mon Sep 17 00:00:00 2001 From: bwestover Date: Mon, 15 Mar 2021 19:37:19 -0700 Subject: [PATCH 07/37] add 3.0.2 release notes --- data/release-notes/3-0/2.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 data/release-notes/3-0/2.yml diff --git a/data/release-notes/3-0/2.yml b/data/release-notes/3-0/2.yml new file mode 100644 index 0000000000..f2075f6dda --- /dev/null +++ b/data/release-notes/3-0/2.yml @@ -0,0 +1,27 @@ +date: '2021-03-16' +sections: + security_fixes: + - Packages have been updated to the latest security versions. + bugs: + - During a backup an error "Warning: One or more storage objects were not found on the source appliance." was occurring when attempting to clean up purgeable storage objects. + - Dependency graph failed to parse `yarn.lock` JavaScript manifest files, resulting in HTTP 500 errors in logs. + - Disabling GitHub Actions would sometimes fail. + - Custom pre-receive hooks weren''t allowed to write to `/tmp`, preventing some scripts from running correctly. + - Systemd journal logs were duplicated in multiple places. + - A timezone set on GitHub Enterprise 11.10.x or earlier was reset to UTC time after upgrading to 3.0 which caused timestamps to shift in some instances. + - Clicking "Publish your first package" in the packages sidebar on a repository would lead to an empty page. + - A site admin could get a 500 error page while trying to view issues referenced from private repositories. + - After disabling GitHub Packages, some organization pages would return an HTTP 500 error response. + - Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error. + - Repository [deploy keys](/developers/overview/managing-deploy-keys) were unable to be used with repositories containing LFS objects. + - In the packages sidebar of a repository, the Docker icon was gray and a tool tip displayed "This service is deprecated". + - Webhooks configured with a content type of `application/x-www-form-urlencoded` did not receive query parameters in the POST request body. + - Users could dismiss a mandatory message without checking all checkboxes. + known_issues: + - On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user. + - Custom firewall rules are not maintained during an upgrade. + - Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository. + - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. + - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. + - When maintenance mode is enabled, some services continue to be listed as "active processes". The services identified are expected to run during maintenance mode. If you experience this issue and are unsure, contact [GitHub Enterprise Support](https://enterprise.githubsupport.com/hc/en-us) or [GitHub Premium Support](https://premium.githubsupport.com/). + - Juypter Notebook rendering in the web UI may fail if the notebook includes non UTF-8 encoded characters. From 9b58c6d1f666201e14202f6cb0132f10feb83c61 Mon Sep 17 00:00:00 2001 From: bwestover Date: Mon, 15 Mar 2021 20:23:14 -0700 Subject: [PATCH 08/37] try adding back quotes --- data/release-notes/2-21/16.yml | 16 ++++++------ data/release-notes/2-22/8.yml | 18 +++++++------- data/release-notes/3-0/2.yml | 45 +++++++++++++++++----------------- 3 files changed, 40 insertions(+), 39 deletions(-) diff --git a/data/release-notes/2-21/16.yml b/data/release-notes/2-21/16.yml index b29f6242a2..a2baf3b8be 100644 --- a/data/release-notes/2-21/16.yml +++ b/data/release-notes/2-21/16.yml @@ -1,14 +1,14 @@ date: '2021-03-16' sections: security_fixes: - - Packages have been updated to the latest security versions. + - 'Packages have been updated to the latest security versions.' bugs: - - Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error. + - 'Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error.' known_issues: - - On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user. - - Custom firewall rules are not maintained during an upgrade. - - Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository. - - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. - - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. - - Security alerts are not reported when pushing to a repository on the command line. + - 'On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user.' + - 'Custom firewall rules are not maintained during an upgrade.' + - 'Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository.' + - 'Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters.' + - 'When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results.' + - 'Security alerts are not reported when pushing to a repository on the command line.' diff --git a/data/release-notes/2-22/8.yml b/data/release-notes/2-22/8.yml index f5b3d0c0fd..fbc6563b93 100644 --- a/data/release-notes/2-22/8.yml +++ b/data/release-notes/2-22/8.yml @@ -1,15 +1,15 @@ date: '2021-03-16' sections: security_fixes: - - Packages have been updated to the latest security versions. + - 'Packages have been updated to the latest security versions.' bugs: - - Systemd journal logs were duplicated in multiple places. - - A site admin could get a 500 error page while trying to view issues referenced from private repositories. - - Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error. + - 'Systemd journal logs were duplicated in multiple places.' + - 'A site admin could get a 500 error page while trying to view issues referenced from private repositories.' + - 'Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error.' known_issues: - - On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user. - - Custom firewall rules are not maintained during an upgrade. - - Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository. - - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. - - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. + - 'On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user.' + - 'Custom firewall rules are not maintained during an upgrade.' + - 'Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository.' + - 'Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters.' + - 'When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results.' diff --git a/data/release-notes/3-0/2.yml b/data/release-notes/3-0/2.yml index f2075f6dda..9d9ca781af 100644 --- a/data/release-notes/3-0/2.yml +++ b/data/release-notes/3-0/2.yml @@ -1,27 +1,28 @@ date: '2021-03-16' sections: security_fixes: - - Packages have been updated to the latest security versions. + - 'Packages have been updated to the latest security versions.' bugs: - - During a backup an error "Warning: One or more storage objects were not found on the source appliance." was occurring when attempting to clean up purgeable storage objects. - - Dependency graph failed to parse `yarn.lock` JavaScript manifest files, resulting in HTTP 500 errors in logs. - - Disabling GitHub Actions would sometimes fail. - - Custom pre-receive hooks weren''t allowed to write to `/tmp`, preventing some scripts from running correctly. - - Systemd journal logs were duplicated in multiple places. - - A timezone set on GitHub Enterprise 11.10.x or earlier was reset to UTC time after upgrading to 3.0 which caused timestamps to shift in some instances. - - Clicking "Publish your first package" in the packages sidebar on a repository would lead to an empty page. - - A site admin could get a 500 error page while trying to view issues referenced from private repositories. - - After disabling GitHub Packages, some organization pages would return an HTTP 500 error response. - - Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error. - - Repository [deploy keys](/developers/overview/managing-deploy-keys) were unable to be used with repositories containing LFS objects. - - In the packages sidebar of a repository, the Docker icon was gray and a tool tip displayed "This service is deprecated". - - Webhooks configured with a content type of `application/x-www-form-urlencoded` did not receive query parameters in the POST request body. - - Users could dismiss a mandatory message without checking all checkboxes. + - 'During a backup an error "Warning: One or more storage objects were not found on the source appliance." was occurring when attempting to clean up purgeable storage objects.' + - 'Dependency graph failed to parse `yarn.lock` JavaScript manifest files, resulting in HTTP 500 errors in logs.' + - 'Disabling GitHub Actions would sometimes fail.' + - 'Custom pre-receive hooks were not allowed to write to `/tmp`, preventing some scripts from running correctly.' + - 'Systemd journal logs were duplicated in multiple places.' + - 'A timezone set on GitHub Enterprise 11.10.x or earlier was reset to UTC time after upgrading to 3.0 which caused timestamps to shift in some instances.' + - 'Clicking "Publish your first package" in the packages sidebar on a repository would lead to an empty page.' + - 'A site admin could get a 500 error page while trying to view issues referenced from private repositories.' + - 'After disabling GitHub Packages, some organization pages would return an HTTP 500 error response.' + - 'Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error.' + - 'Repository [deploy keys](/developers/overview/managing-deploy-keys) were unable to be used with repositories containing LFS objects.' + - 'In the packages sidebar of a repository, the Docker icon was gray and a tool tip displayed "This service is deprecated".' + - 'Webhooks configured with a content type of `application/x-www-form-urlencoded` did not receive query parameters in the POST request body.' + - 'Users could dismiss a mandatory message without checking all checkboxes.' known_issues: - - On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user. - - Custom firewall rules are not maintained during an upgrade. - - Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository. - - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. - - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. - - When maintenance mode is enabled, some services continue to be listed as "active processes". The services identified are expected to run during maintenance mode. If you experience this issue and are unsure, contact [GitHub Enterprise Support](https://enterprise.githubsupport.com/hc/en-us) or [GitHub Premium Support](https://premium.githubsupport.com/). - - Juypter Notebook rendering in the web UI may fail if the notebook includes non UTF-8 encoded characters. + - 'On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user.' + - 'Custom firewall rules are not maintained during an upgrade.' + - 'Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository.' + - 'Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters.' + - 'When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results.' + - 'When maintenance mode is enabled, some services continue to be listed as "active processes". The services identified are expected to run during maintenance mode. If you experience this issue and are unsure, contact [GitHub Enterprise Support](https://enterprise.githubsupport.com/hc/en-us) or [GitHub Premium Support](https://premium.githubsupport.com/).' + - 'Jupyter Notebook rendering in the web UI may fail if the notebook includes non UTF-8 encoded characters.' + From b1f4b2924316899c870d2f56024ac96d4e76fe50 Mon Sep 17 00:00:00 2001 From: bwestover Date: Mon, 15 Mar 2021 20:34:15 -0700 Subject: [PATCH 09/37] Revert "try adding back quotes" This reverts commit 9b58c6d1f666201e14202f6cb0132f10feb83c61. --- data/release-notes/2-21/16.yml | 16 ++++++------ data/release-notes/2-22/8.yml | 18 +++++++------- data/release-notes/3-0/2.yml | 45 +++++++++++++++++----------------- 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/data/release-notes/2-21/16.yml b/data/release-notes/2-21/16.yml index a2baf3b8be..b29f6242a2 100644 --- a/data/release-notes/2-21/16.yml +++ b/data/release-notes/2-21/16.yml @@ -1,14 +1,14 @@ date: '2021-03-16' sections: security_fixes: - - 'Packages have been updated to the latest security versions.' + - Packages have been updated to the latest security versions. bugs: - - 'Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error.' + - Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error. known_issues: - - 'On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user.' - - 'Custom firewall rules are not maintained during an upgrade.' - - 'Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository.' - - 'Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters.' - - 'When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results.' - - 'Security alerts are not reported when pushing to a repository on the command line.' + - On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user. + - Custom firewall rules are not maintained during an upgrade. + - Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository. + - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. + - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. + - Security alerts are not reported when pushing to a repository on the command line. diff --git a/data/release-notes/2-22/8.yml b/data/release-notes/2-22/8.yml index fbc6563b93..f5b3d0c0fd 100644 --- a/data/release-notes/2-22/8.yml +++ b/data/release-notes/2-22/8.yml @@ -1,15 +1,15 @@ date: '2021-03-16' sections: security_fixes: - - 'Packages have been updated to the latest security versions.' + - Packages have been updated to the latest security versions. bugs: - - 'Systemd journal logs were duplicated in multiple places.' - - 'A site admin could get a 500 error page while trying to view issues referenced from private repositories.' - - 'Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error.' + - Systemd journal logs were duplicated in multiple places. + - A site admin could get a 500 error page while trying to view issues referenced from private repositories. + - Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error. known_issues: - - 'On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user.' - - 'Custom firewall rules are not maintained during an upgrade.' - - 'Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository.' - - 'Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters.' - - 'When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results.' + - On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user. + - Custom firewall rules are not maintained during an upgrade. + - Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository. + - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. + - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. diff --git a/data/release-notes/3-0/2.yml b/data/release-notes/3-0/2.yml index 9d9ca781af..f2075f6dda 100644 --- a/data/release-notes/3-0/2.yml +++ b/data/release-notes/3-0/2.yml @@ -1,28 +1,27 @@ date: '2021-03-16' sections: security_fixes: - - 'Packages have been updated to the latest security versions.' + - Packages have been updated to the latest security versions. bugs: - - 'During a backup an error "Warning: One or more storage objects were not found on the source appliance." was occurring when attempting to clean up purgeable storage objects.' - - 'Dependency graph failed to parse `yarn.lock` JavaScript manifest files, resulting in HTTP 500 errors in logs.' - - 'Disabling GitHub Actions would sometimes fail.' - - 'Custom pre-receive hooks were not allowed to write to `/tmp`, preventing some scripts from running correctly.' - - 'Systemd journal logs were duplicated in multiple places.' - - 'A timezone set on GitHub Enterprise 11.10.x or earlier was reset to UTC time after upgrading to 3.0 which caused timestamps to shift in some instances.' - - 'Clicking "Publish your first package" in the packages sidebar on a repository would lead to an empty page.' - - 'A site admin could get a 500 error page while trying to view issues referenced from private repositories.' - - 'After disabling GitHub Packages, some organization pages would return an HTTP 500 error response.' - - 'Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error.' - - 'Repository [deploy keys](/developers/overview/managing-deploy-keys) were unable to be used with repositories containing LFS objects.' - - 'In the packages sidebar of a repository, the Docker icon was gray and a tool tip displayed "This service is deprecated".' - - 'Webhooks configured with a content type of `application/x-www-form-urlencoded` did not receive query parameters in the POST request body.' - - 'Users could dismiss a mandatory message without checking all checkboxes.' + - During a backup an error "Warning: One or more storage objects were not found on the source appliance." was occurring when attempting to clean up purgeable storage objects. + - Dependency graph failed to parse `yarn.lock` JavaScript manifest files, resulting in HTTP 500 errors in logs. + - Disabling GitHub Actions would sometimes fail. + - Custom pre-receive hooks weren''t allowed to write to `/tmp`, preventing some scripts from running correctly. + - Systemd journal logs were duplicated in multiple places. + - A timezone set on GitHub Enterprise 11.10.x or earlier was reset to UTC time after upgrading to 3.0 which caused timestamps to shift in some instances. + - Clicking "Publish your first package" in the packages sidebar on a repository would lead to an empty page. + - A site admin could get a 500 error page while trying to view issues referenced from private repositories. + - After disabling GitHub Packages, some organization pages would return an HTTP 500 error response. + - Importing of repository archives from GitHub Enterprise Server that are missing repository files would fail with an error. + - Repository [deploy keys](/developers/overview/managing-deploy-keys) were unable to be used with repositories containing LFS objects. + - In the packages sidebar of a repository, the Docker icon was gray and a tool tip displayed "This service is deprecated". + - Webhooks configured with a content type of `application/x-www-form-urlencoded` did not receive query parameters in the POST request body. + - Users could dismiss a mandatory message without checking all checkboxes. known_issues: - - 'On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user.' - - 'Custom firewall rules are not maintained during an upgrade.' - - 'Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository.' - - 'Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters.' - - 'When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results.' - - 'When maintenance mode is enabled, some services continue to be listed as "active processes". The services identified are expected to run during maintenance mode. If you experience this issue and are unsure, contact [GitHub Enterprise Support](https://enterprise.githubsupport.com/hc/en-us) or [GitHub Premium Support](https://premium.githubsupport.com/).' - - 'Jupyter Notebook rendering in the web UI may fail if the notebook includes non UTF-8 encoded characters.' - + - On a freshly set up GitHub Enterprise Server without any users, an attacker could create the first admin user. + - Custom firewall rules are not maintained during an upgrade. + - Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository. + - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. + - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. + - When maintenance mode is enabled, some services continue to be listed as "active processes". The services identified are expected to run during maintenance mode. If you experience this issue and are unsure, contact [GitHub Enterprise Support](https://enterprise.githubsupport.com/hc/en-us) or [GitHub Premium Support](https://premium.githubsupport.com/). + - Juypter Notebook rendering in the web UI may fail if the notebook includes non UTF-8 encoded characters. From 3a7cb3bf15c48b78e1c1387bd46cf69d0ece2837 Mon Sep 17 00:00:00 2001 From: bwestover Date: Mon, 15 Mar 2021 20:35:37 -0700 Subject: [PATCH 10/37] space_invader --- data/release-notes/2-21/16.yml | 1 - data/release-notes/2-22/8.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/data/release-notes/2-21/16.yml b/data/release-notes/2-21/16.yml index b29f6242a2..ac4c83fe6d 100644 --- a/data/release-notes/2-21/16.yml +++ b/data/release-notes/2-21/16.yml @@ -11,4 +11,3 @@ sections: - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. - Security alerts are not reported when pushing to a repository on the command line. - diff --git a/data/release-notes/2-22/8.yml b/data/release-notes/2-22/8.yml index f5b3d0c0fd..d1f7ca16f3 100644 --- a/data/release-notes/2-22/8.yml +++ b/data/release-notes/2-22/8.yml @@ -12,4 +12,3 @@ sections: - Git LFS tracked files [uploaded through the web interface](https://github.com/blog/2105-upload-files-to-your-repositories) are incorrectly added directly to the repository. - Issues cannot be closed if they contain a permalink to a blob in the same repository where the file path is longer than 255 characters. - When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results. - From b45ace3ec9131b0483d723cef321b27fc3b37d40 Mon Sep 17 00:00:00 2001 From: bwestover Date: Mon, 15 Mar 2021 21:09:41 -0700 Subject: [PATCH 11/37] encode a colon --- data/release-notes/3-0/2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/release-notes/3-0/2.yml b/data/release-notes/3-0/2.yml index f2075f6dda..8917474e08 100644 --- a/data/release-notes/3-0/2.yml +++ b/data/release-notes/3-0/2.yml @@ -3,7 +3,7 @@ sections: security_fixes: - Packages have been updated to the latest security versions. bugs: - - During a backup an error "Warning: One or more storage objects were not found on the source appliance." was occurring when attempting to clean up purgeable storage objects. + - During a backup an error "Warning: One or more storage objects were not found on the source appliance." was occurring when attempting to clean up purgeable storage objects. - Dependency graph failed to parse `yarn.lock` JavaScript manifest files, resulting in HTTP 500 errors in logs. - Disabling GitHub Actions would sometimes fail. - Custom pre-receive hooks weren''t allowed to write to `/tmp`, preventing some scripts from running correctly. From 2bf7faf14e84c2dcc00f49409fd31f1b762d36ff Mon Sep 17 00:00:00 2001 From: Brett Westover Date: Mon, 15 Mar 2021 21:43:48 -0700 Subject: [PATCH 12/37] Update data/release-notes/3-0/2.yml Co-authored-by: Caine Jette --- data/release-notes/3-0/2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/release-notes/3-0/2.yml b/data/release-notes/3-0/2.yml index 8917474e08..95cc35dff7 100644 --- a/data/release-notes/3-0/2.yml +++ b/data/release-notes/3-0/2.yml @@ -6,7 +6,7 @@ sections: - During a backup an error "Warning: One or more storage objects were not found on the source appliance." was occurring when attempting to clean up purgeable storage objects. - Dependency graph failed to parse `yarn.lock` JavaScript manifest files, resulting in HTTP 500 errors in logs. - Disabling GitHub Actions would sometimes fail. - - Custom pre-receive hooks weren''t allowed to write to `/tmp`, preventing some scripts from running correctly. + - Custom pre-receive hooks weren't allowed to write to `/tmp`, preventing some scripts from running correctly. - Systemd journal logs were duplicated in multiple places. - A timezone set on GitHub Enterprise 11.10.x or earlier was reset to UTC time after upgrading to 3.0 which caused timestamps to shift in some instances. - Clicking "Publish your first package" in the packages sidebar on a repository would lead to an empty page. From 6f3f21417fca34ea0e79101f2077935f2effb2fc Mon Sep 17 00:00:00 2001 From: Daniel Compton Date: Wed, 17 Mar 2021 02:30:03 +1300 Subject: [PATCH 13/37] Update github-sponsors-additional-terms.md (#17937) --- content/github/site-policy/github-sponsors-additional-terms.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/github/site-policy/github-sponsors-additional-terms.md b/content/github/site-policy/github-sponsors-additional-terms.md index 343c68a35c..c7cc916d33 100644 --- a/content/github/site-policy/github-sponsors-additional-terms.md +++ b/content/github/site-policy/github-sponsors-additional-terms.md @@ -118,7 +118,7 @@ During the term, GitHub will remit to you all Sponsored Developer Payments recei - For newly created Sponsored Developer Accounts, GitHub will remit to you all Sponsored Developer Payments received in a given month within 90 days of the creation of your Sponsored Developer Account, subject to the variables below. Payments thereafter will be remitted within 30 days of the close of that month, in accordance with this section. -- If you are paid through Stripe Connect, you will receive payouts on the 22nd of the month for your balance at the end of the previous month, regardless of the amount of the balance. +- If you are paid through Stripe Connect, you will receive payouts on the 22nd of the month for the balance accrued since the last payout, regardless of the amount of the balance. Payout initiation dates vary by country, and can change from month to month due to public holidays, weekends, and other factors. - If you are paid through ACH transfer or wire transfer, you will receive payouts on the third Thursday of the month. GitHub will issue a payout to you for any month that your balance reaches $100 USD. Contributions from the GitHub Sponsors Matching Fund do not count towards this threshold. If your balance is below $100 at the end of the month, the balance will accrue until the next time your balance is above the threshold at the end of the month. If you leave GitHub Sponsors, GitHub will issue a payout for your remaining balance even if the balance is below $100. From fc38a404d97539c69d1435a72792596e870916f9 Mon Sep 17 00:00:00 2001 From: Rachael Sewell Date: Tue, 16 Mar 2021 08:59:14 -0700 Subject: [PATCH 14/37] check for openapi type property (#18257) --- script/rest/utils/create-code-samples.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/script/rest/utils/create-code-samples.js b/script/rest/utils/create-code-samples.js index ddb1d7bf6c..0bee5f1bf7 100644 --- a/script/rest/utils/create-code-samples.js +++ b/script/rest/utils/create-code-samples.js @@ -114,15 +114,18 @@ function getExampleBodyParams ({ operation }) { return { [paramName]: getExampleParamValue(paramName, schema) } } - if (schema.oneOf) { + if (schema.oneOf && schema.oneOf[0].type) { schema = schema.oneOf[0] } + const props = schema.required && schema.required.length > 0 ? schema.required : Object.keys(schema.properties).slice(0, 1) + return props.reduce((dict, propName) => { const propSchema = schema.properties[propName] + if (!propSchema.deprecated) { dict[propName] = getExampleParamValue(propName, propSchema) } @@ -137,8 +140,8 @@ function getExampleParamValue (name, schema) { } // TODO: figure out the right behavior here - if (schema.oneOf) return getExampleParamValue(name, schema.oneOf[0]) - if (schema.anyOf) return getExampleParamValue(name, schema.anyOf[0]) + if (schema.oneOf && schema.oneOf[0].type) return getExampleParamValue(name, schema.oneOf[0]) + if (schema.anyOf && schema.anyOf[0].type) return getExampleParamValue(name, schema.anyOf[0]) switch (schema.type) { case 'string': From 8f63a4450cd2b625eb71dbadde7cacec4b248fe5 Mon Sep 17 00:00:00 2001 From: github-openapi-bot <69533958+github-openapi-bot@users.noreply.github.com> Date: Tue, 16 Mar 2021 12:45:30 -0400 Subject: [PATCH 15/37] Update OpenAPI Descriptions (#18249) --- lib/rest/static/decorated/api.github.com.json | 678 ++++++- lib/rest/static/decorated/ghes-2.18.json | 555 +++++- lib/rest/static/decorated/ghes-2.19.json | 563 +++++- lib/rest/static/decorated/ghes-2.20.json | 563 +++++- lib/rest/static/decorated/ghes-2.21.json | 573 +++++- lib/rest/static/decorated/ghes-2.22.json | 634 ++++++- lib/rest/static/decorated/ghes-3.0.json | 634 ++++++- lib/rest/static/decorated/github.ae.json | 1545 +++++++++++++++- .../dereferenced/api.github.com.deref.json | 731 +++++++- .../static/dereferenced/ghes-2.18.deref.json | 615 ++++++- .../static/dereferenced/ghes-2.19.deref.json | 619 ++++++- .../static/dereferenced/ghes-2.20.deref.json | 619 ++++++- .../static/dereferenced/ghes-2.21.deref.json | 628 ++++++- .../static/dereferenced/ghes-2.22.deref.json | 689 ++++++- .../static/dereferenced/ghes-3.0.deref.json | 689 ++++++- .../static/dereferenced/github.ae.deref.json | 1590 ++++++++++++++++- 16 files changed, 11160 insertions(+), 765 deletions(-) diff --git a/lib/rest/static/decorated/api.github.com.json b/lib/rest/static/decorated/api.github.com.json index e71e5b02e2..c32bca4754 100644 --- a/lib/rest/static/decorated/api.github.com.json +++ b/lib/rest/static/decorated/api.github.com.json @@ -2498,6 +2498,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -5346,6 +5356,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -9284,6 +9304,16 @@ }, "descriptionHTML": "

The order of audit log events. To list newest events first, specify desc. To list oldest events first, specify asc.

\n

The default is desc.

" }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, { "name": "per_page", "description": "Results per page (max 100).", @@ -11857,6 +11887,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -12076,6 +12107,16 @@ "default": 30 }, "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -15757,6 +15798,26 @@ "type": "integer" }, "descriptionHTML": "

Unique identifier of the self-hosted runner group.

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -17345,6 +17406,26 @@ "type": "string" }, "descriptionHTML": "

secret_name parameter

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -17754,6 +17835,16 @@ "default": 30 }, "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -20627,6 +20718,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -21382,6 +21474,23 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "exclude", + "description": "Exclude attributes from the API response to improve performance", + "in": "query", + "schema": { + "type": "array", + "items": { + "description": "Allowed values that can be passed to the exclude param.", + "enum": [ + "repositories" + ], + "example": "repositories", + "type": "string" + } + }, + "descriptionHTML": "

Exclude attributes from the API response to improve performance

" } ], "x-codeSamples": [ @@ -21638,6 +21747,23 @@ "type": "integer" }, "descriptionHTML": "

migration_id parameter

" + }, + { + "name": "exclude", + "description": "Exclude attributes from the API response to improve performance", + "in": "query", + "schema": { + "type": "array", + "items": { + "description": "Allowed values that can be passed to the exclude param.", + "enum": [ + "repositories" + ], + "example": "repositories", + "type": "string" + } + }, + "descriptionHTML": "

Exclude attributes from the API response to improve performance

" } ], "x-codeSamples": [ @@ -22548,6 +22674,16 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "token", + "description": "package token", + "schema": { + "type": "string" + }, + "required": false, + "in": "query", + "descriptionHTML": "

package token

" } ], "x-codeSamples": [ @@ -22649,6 +22785,41 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "state", + "in": "query", + "required": false, + "description": "The state of the package, either active or deleted.", + "schema": { + "type": "string", + "enum": [ + "active", + "deleted" + ], + "default": "active" + }, + "descriptionHTML": "

The state of the package, either active or deleted.

" } ], "x-codeSamples": [ @@ -22668,7 +22839,7 @@ "tags": [ "packages" ], - "operationId": "packages/get-all-package-versions-for-a-package-owned-by-an-org", + "operationId": "packages/get-all-package-versions-for-package-owned-by-org", "externalDocs": { "description": "API method documentation", "url": "https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-the-authenticated-user" @@ -23596,7 +23767,7 @@ }, { "name": "type", - "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", + "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Note: For GitHub AE, can be one of `all`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", "in": "query", "required": false, "schema": { @@ -23611,7 +23782,7 @@ "internal" ] }, - "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" + "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Note: For GitHub AE, can be one of all, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" }, { "name": "sort", @@ -23750,7 +23921,7 @@ } ], "summary": "Create an organization repository", - "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -23794,17 +23965,17 @@ }, "private": { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "visibility": { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -23814,7 +23985,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, "has_issues": { @@ -23975,7 +24146,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -24006,17 +24177,17 @@ }, { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -24026,7 +24197,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, { @@ -24194,7 +24365,7 @@ } ], "summary": "Get GitHub Actions billing for an organization", - "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAccess tokens must have the `repo` or `admin:org` scope.", + "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAccess tokens must have the `repo` or `admin:org` scope.", "operationId": "billing/get-github-actions-billing-org", "tags": [ "billing" @@ -24215,7 +24386,7 @@ "categoryLabel": "Billing", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Gets the summary of the free and paid GitHub Actions minutes used.

\n

Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"Managing billing for GitHub Actions\".

\n

Access tokens must have the repo or admin:org scope.

", + "descriptionHTML": "

Gets the summary of the free and paid GitHub Actions minutes used.

\n

Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see \"Managing billing for GitHub Actions\".

\n

Access tokens must have the repo or admin:org scope.

", "responses": [ { "httpStatusCode": "200", @@ -24369,13 +24540,12 @@ }, { "name": "page", - "description": "Page number of the results to fetch.", + "description": "Page token", "in": "query", "schema": { - "type": "integer", - "default": 1 + "type": "string" }, - "descriptionHTML": "

Page number of the results to fetch.

" + "descriptionHTML": "

Page token

" } ], "x-codeSamples": [ @@ -25154,6 +25324,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "pinned", + "in": "query", + "required": false, + "description": "Pinned discussions only filter", + "schema": { + "type": "string" + }, + "descriptionHTML": "

Pinned discussions only filter

" } ], "x-codeSamples": [ @@ -41866,7 +42046,7 @@ "name", "head_sha" ], - "anyOf": [ + "oneOf": [ { "properties": { "status": { @@ -41876,6 +42056,7 @@ } }, "required": [ + "status", "conclusion" ], "additionalProperties": true @@ -45847,7 +46028,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "descriptionHTML": "

The Git reference for the results you want to list. The ref for a branch can be formatted either as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge.

" }, @@ -45861,6 +46042,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -45881,7 +46063,7 @@ } ], "summary": "List code scanning alerts for a repository", - "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used `ref` in the request).", + "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).", "tags": [ "code-scanning" ], @@ -45902,7 +46084,7 @@ "categoryLabel": "Code scanning", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all open code scanning alerts for the default branch (usually main\nor master). You must use an access token with the security_events scope to use\nthis endpoint. GitHub Apps must have the security_events read permission to use\nthis endpoint.

\n

The response includes a most_recent_instance object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used ref in the request).

", + "descriptionHTML": "

Lists all open code scanning alerts for the default branch (usually main\nor master). You must use an access token with the security_events scope to use\nthis endpoint. GitHub Apps must have the security_events read permission to use\nthis endpoint.

\n

The response includes a most_recent_instance object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used ref in the request).

", "responses": [ { "httpStatusCode": "200", @@ -46274,7 +46456,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "descriptionHTML": "

The Git reference for the results you want to list. The ref for a branch can be formatted either as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge.

" } @@ -46411,7 +46593,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "descriptionHTML": "

The Git reference for the analyses you want to list. The ref for a branch can be formatted either as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge.

" }, @@ -46618,7 +46800,8 @@ "description": "Allow deletion if the specified analysis is the last in a set. The parameter can be used without a value as the parameter value is not considered. If you attempt to delete the final analysis in a set without using this parameter you'll get a 400 response with the message: `Analysis is last of its type and deletion may result in the loss of historical alert data. Please specify confirm_delete.`", "required": false, "schema": { - "type": "string" + "type": "string", + "nullable": true }, "descriptionHTML": "

Allow deletion if the specified analysis is the last in a set. The parameter can be used without a value as the parameter value is not considered. If you attempt to delete the final analysis in a set without using this parameter you'll get a 400 response with the message: Analysis is last of its type and deletion may result in the loss of historical alert data. Please specify confirm_delete.

" } @@ -46723,7 +46906,7 @@ } ], "summary": "Upload an analysis as SARIF data", - "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", + "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nThere are two places where you can upload code scanning results.\n - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see \"[Triaging code scanning alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests).\"\n - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see \"[Managing code scanning alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository).\"\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", "operationId": "code-scanning/upload-sarif", "tags": [ "code-scanning" @@ -46752,11 +46935,11 @@ }, "ref": { "type": "string", - "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>.

", + "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>,\nrefs/pull/<number>/merge, or refs/pull/<number>/head.

", "name": "ref", "in": "body", "rawType": "string", - "rawDescription": "The full Git reference, formatted as `refs/heads/`.", + "rawDescription": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`.", "childParamsGroups": [] }, "sarif": { @@ -46818,7 +47001,7 @@ "category": "code-scanning", "categoryLabel": "Code scanning", "notes": [], - "descriptionHTML": "

Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events write permission to use this endpoint.

\n

You must compress the SARIF-formatted analysis data that you want to upload, using gzip, and then encode it as a Base64 format string. For example:

\n
gzip -c analysis-data.sarif | base64\n
\n

SARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.

\n

The 202 Accepted, response includes an id value.\nYou can use this ID to check the status of the upload by using this for the /sarifs/{sarif_id} endpoint.\nFor more information, see \"Get information about a SARIF upload.\"

", + "descriptionHTML": "

Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events write permission to use this endpoint.

\n

There are two places where you can upload code scanning results.

\n\n

You must compress the SARIF-formatted analysis data that you want to upload, using gzip, and then encode it as a Base64 format string. For example:

\n
gzip -c analysis-data.sarif | base64\n
\n

SARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.

\n

The 202 Accepted, response includes an id value.\nYou can use this ID to check the status of the upload by using this for the /sarifs/{sarif_id} endpoint.\nFor more information, see \"Get information about a SARIF upload.\"

", "bodyParameters": [ { "description": "

Required. The SHA of the commit to which the analysis you are uploading relates.

", @@ -46834,11 +47017,11 @@ }, { "type": "string", - "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>.

", + "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>,\nrefs/pull/<number>/merge, or refs/pull/<number>/head.

", "name": "ref", "in": "body", "rawType": "string", - "rawDescription": "The full Git reference, formatted as `refs/heads/`.", + "rawDescription": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`.", "childParamsGroups": [] }, { @@ -48393,6 +48576,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" } ], "x-codeSamples": [ @@ -48988,16 +49193,36 @@ }, "descriptionHTML": "" }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -49086,14 +49311,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "check_name", @@ -49154,6 +49379,15 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -49227,14 +49461,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "app_id", @@ -49349,14 +49583,34 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -49435,14 +49689,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -49783,14 +50037,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" }, { "name": "ref", @@ -49907,14 +50161,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -50430,14 +50684,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -50980,7 +51234,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true }, "descriptionHTML": "

The name of the environment that was deployed to (e.g., staging or production).

" }, @@ -52972,7 +53227,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" }, @@ -52997,6 +53253,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -53072,6 +53350,28 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -53101,6 +53401,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -54001,14 +54302,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -54102,14 +54403,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -54337,14 +54638,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -54480,14 +54781,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -55391,6 +55692,7 @@ "schema": { "type": "string" }, + "x-multi-segment": true, "descriptionHTML": "" }, { @@ -66589,18 +66891,17 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] }, - "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to).

" + "descriptionHTML": "" }, { "name": "direction", @@ -70757,6 +71058,107 @@ } ] }, + { + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/readme/{dir}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true, + "descriptionHTML": "

The alternate path to look for a README file

" + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The name of the commit/branch/tag. Default: the repository’s default branch (usually master)

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/repos/octocat/hello-world/readme/DIR", + "html": "
curl \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/repos/octocat/hello-world/readme/DIR
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n owner: 'octocat',\n repo: 'hello-world',\n dir: 'dir'\n})", + "html": "
await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n  owner: 'octocat',\n  repo: 'hello-world',\n  dir: 'dir'\n})\n
" + } + ], + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/rest/reference/repos#get-a-repository-readme" + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [], + "category": "repos", + "subcategory": "contents" + }, + "slug": "get-a-repository-readme", + "category": "repos", + "categoryLabel": "Repos", + "subcategory": "contents", + "subcategoryLabel": "Contents", + "notes": [], + "bodyParameters": [], + "descriptionHTML": "

Gets the preferred README for a repository.

\n

READMEs support custom media types for retrieving the raw content or rendered HTML.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"type\": \"file\",\n  \"encoding\": \"base64\",\n  \"size\": 5362,\n  \"name\": \"README.md\",\n  \"path\": \"README.md\",\n  \"content\": \"encoded content ...\",\n  \"sha\": \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"url\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n  \"git_url\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"html_url\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n  \"download_url\": \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n  \"_links\": {\n    \"git\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n    \"self\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n    \"html\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\"\n  }\n}\n
" + }, + { + "httpStatusCode": "404", + "httpStatusMessage": "Not Found", + "description": "Resource not found" + }, + { + "httpStatusCode": "422", + "httpStatusMessage": "Unprocessable Entity", + "description": "Validation failed" + } + ] + }, { "verb": "get", "requestPath": "/repos/{owner}/{repo}/releases", @@ -71482,14 +71884,14 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

tag+ parameter

" + "descriptionHTML": "

tag parameter

" } ], "x-codeSamples": [ @@ -73795,6 +74197,26 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -74026,6 +74448,7 @@ "schema": { "type": "string", "enum": [ + "", "day", "week" ], @@ -74266,6 +74689,7 @@ "schema": { "type": "string", "enum": [ + "", "day", "week" ], @@ -74799,7 +75223,7 @@ } ], "summary": "Create a repository using a template", - "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -74894,7 +75318,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -74982,7 +75406,7 @@ } ], "summary": "List public repositories", - "description": "Lists all public repositories in the order that they were created.\n\nNote: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", + "description": "Lists all public repositories in the order that they were created.\n\nNotes:\n- For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.\n- Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", "tags": [ "repos" ], @@ -75003,7 +75427,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.

", + "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Notes:

\n
    \n
  • For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.
  • \n
  • Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.
  • \n
", "responses": [ { "httpStatusCode": "200", @@ -75519,6 +75943,26 @@ "type": "integer" }, "descriptionHTML": "

Used for pagination: the number of results to return.

" + }, + { + "name": "filter", + "description": "filter results", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

filter results

" + }, + { + "name": "excludedAttributes", + "description": "attributes to exclude", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

attributes to exclude

" } ], "x-codeSamples": [ @@ -75809,6 +76253,16 @@ "type": "string" }, "descriptionHTML": "

Identifier generated by the GitHub SCIM endpoint.

" + }, + { + "name": "excludedAttributes", + "description": "Attributes to exclude.", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Attributes to exclude.

" } ], "x-codeSamples": [ @@ -76534,6 +76988,16 @@ "type": "integer" }, "descriptionHTML": "

Used for pagination: the number of results to return.

" + }, + { + "name": "filter", + "description": "filter results", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

filter results

" } ], "x-codeSamples": [ @@ -87094,6 +87558,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -89142,6 +89607,16 @@ "type": "string" }, "descriptionHTML": "

The name of the package.

" + }, + { + "name": "token", + "description": "package token", + "schema": { + "type": "string" + }, + "required": false, + "in": "query", + "descriptionHTML": "

package token

" } ], "x-codeSamples": [ @@ -89234,6 +89709,41 @@ "type": "string" }, "descriptionHTML": "

The name of the package.

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "state", + "in": "query", + "required": false, + "description": "The state of the package, either active or deleted.", + "schema": { + "type": "string", + "enum": [ + "active", + "deleted" + ], + "default": "active" + }, + "descriptionHTML": "

The state of the package, either active or deleted.

" } ], "x-codeSamples": [ @@ -89253,7 +89763,7 @@ "tags": [ "packages" ], - "operationId": "packages/get-all-package-versions-for-a-package-owned-by-the-authenticated-user", + "operationId": "packages/get-all-package-versions-for-package-owned-by-authenticated-user", "externalDocs": { "description": "API method documentation", "url": "https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-the-authenticated-user" @@ -89824,7 +90334,7 @@ "parameters": [ { "name": "visibility", - "description": "Can be one of `all`, `public`, or `private`.", + "description": "Can be one of `all`, `public`, or `private`. Note: For GitHub AE, can be one of `all`, `internal`, or `private`.", "in": "query", "required": false, "schema": { @@ -89836,7 +90346,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, public, or private.

" + "descriptionHTML": "

Can be one of all, public, or private. Note: For GitHub AE, can be one of all, internal, or private.

" }, { "name": "affiliation", @@ -89851,7 +90361,7 @@ }, { "name": "type", - "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", + "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Note: For GitHub AE, can be one of `all`, `owner`, `internal`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", "in": "query", "required": false, "schema": { @@ -89865,7 +90375,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, owner, public, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" + "descriptionHTML": "

Can be one of all, owner, public, private, member. Note: For GitHub AE, can be one of all, owner, internal, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" }, { "name": "sort", @@ -90021,7 +90531,7 @@ } ], "summary": "Create a repository for the authenticated user", - "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository.", "tags": [ "repos" ], @@ -90064,13 +90574,13 @@ "childParamsGroups": [] }, "private": { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "has_issues": { @@ -90244,7 +90754,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository.
  • \n
", "bodyParameters": [ { "description": "

Required. The name of the repository.

", @@ -90275,13 +90785,13 @@ "childParamsGroups": [] }, { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { @@ -93044,7 +93554,7 @@ } ], "summary": "List repositories for a user", - "description": "Lists public repositories for the specified user.", + "description": "Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.", "tags": [ "repos" ], @@ -93072,7 +93582,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists public repositories for the specified user.

", + "descriptionHTML": "

Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.

", "responses": [ { "httpStatusCode": "200", @@ -93110,7 +93620,7 @@ } ], "summary": "Get GitHub Actions billing for a user", - "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAccess tokens must have the `user` scope.", + "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAccess tokens must have the `user` scope.", "operationId": "billing/get-github-actions-billing-user", "tags": [ "billing" @@ -93131,7 +93641,7 @@ "categoryLabel": "Billing", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Gets the summary of the free and paid GitHub Actions minutes used.

\n

Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"Managing billing for GitHub Actions\".

\n

Access tokens must have the user scope.

", + "descriptionHTML": "

Gets the summary of the free and paid GitHub Actions minutes used.

\n

Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see \"Managing billing for GitHub Actions\".

\n

Access tokens must have the user scope.

", "responses": [ { "httpStatusCode": "200", diff --git a/lib/rest/static/decorated/ghes-2.18.json b/lib/rest/static/decorated/ghes-2.18.json index 1af1e09823..b3f5c2bf3d 100644 --- a/lib/rest/static/decorated/ghes-2.18.json +++ b/lib/rest/static/decorated/ghes-2.18.json @@ -1070,6 +1070,46 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + }, + "descriptionHTML": "" + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Only show public keys accessed after the given time.

" } ], "x-codeSamples": [ @@ -1742,6 +1782,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -2340,6 +2410,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to) or name.

" } ], "x-codeSamples": [ @@ -5676,6 +5777,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -6278,6 +6389,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -10110,6 +10231,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -10328,6 +10450,16 @@ "default": 30 }, "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -13418,6 +13550,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -14434,6 +14567,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

The sort order for the response collection.

" } ], "x-codeSamples": [ @@ -15339,7 +15503,7 @@ }, { "name": "type", - "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", + "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Note: For GitHub AE, can be one of `all`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", "in": "query", "required": false, "schema": { @@ -15354,7 +15518,7 @@ "internal" ] }, - "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" + "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Note: For GitHub AE, can be one of all, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" }, { "name": "sort", @@ -15493,7 +15657,7 @@ } ], "summary": "Create an organization repository", - "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.18/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.18/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -15537,17 +15701,17 @@ }, "private": { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "visibility": { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -15557,7 +15721,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, "has_issues": { @@ -15718,7 +15882,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -15749,17 +15913,17 @@ }, { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -15769,7 +15933,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, { @@ -24860,7 +25024,7 @@ "name", "head_sha" ], - "anyOf": [ + "oneOf": [ { "properties": { "status": { @@ -24870,6 +25034,7 @@ } }, "required": [ + "status", "conclusion" ], "additionalProperties": true @@ -30124,6 +30289,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" } ], "x-codeSamples": [ @@ -30719,16 +30906,36 @@ }, "descriptionHTML": "" }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -30817,14 +31024,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "check_name", @@ -30885,6 +31092,15 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -30965,14 +31181,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "app_id", @@ -31094,14 +31310,34 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -31180,14 +31416,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -31384,14 +31620,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" }, { "name": "ref", @@ -31508,14 +31744,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -32031,14 +32267,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -32581,7 +32817,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true }, "descriptionHTML": "

The name of the environment that was deployed to (e.g., staging or production).

" }, @@ -33754,7 +33991,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" }, @@ -33779,6 +34017,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -33854,6 +34114,28 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -33883,6 +34165,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -35021,14 +35304,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -35164,14 +35447,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -36075,6 +36358,7 @@ "schema": { "type": "string" }, + "x-multi-segment": true, "descriptionHTML": "" }, { @@ -44822,6 +45106,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -45900,18 +46214,17 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] }, - "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to).

" + "descriptionHTML": "" }, { "name": "direction", @@ -49803,6 +50116,107 @@ } ] }, + { + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/readme/{dir}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true, + "descriptionHTML": "

The alternate path to look for a README file

" + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The name of the commit/branch/tag. Default: the repository’s default branch (usually master)

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/repos/octocat/hello-world/readme/DIR", + "html": "
curl \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/repos/octocat/hello-world/readme/DIR
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n owner: 'octocat',\n repo: 'hello-world',\n dir: 'dir'\n})", + "html": "
await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n  owner: 'octocat',\n  repo: 'hello-world',\n  dir: 'dir'\n})\n
" + } + ], + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@2.18/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@2.18/rest/reference/repos#get-a-repository-readme" + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [], + "category": "repos", + "subcategory": "contents" + }, + "slug": "get-a-repository-readme", + "category": "repos", + "categoryLabel": "Repos", + "subcategory": "contents", + "subcategoryLabel": "Contents", + "notes": [], + "bodyParameters": [], + "descriptionHTML": "

Gets the preferred README for a repository.

\n

READMEs support custom media types for retrieving the raw content or rendered HTML.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"type\": \"file\",\n  \"encoding\": \"base64\",\n  \"size\": 5362,\n  \"name\": \"README.md\",\n  \"path\": \"README.md\",\n  \"content\": \"encoded content ...\",\n  \"sha\": \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"url\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n  \"git_url\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"html_url\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n  \"download_url\": \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n  \"_links\": {\n    \"git\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n    \"self\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n    \"html\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\"\n  }\n}\n
" + }, + { + "httpStatusCode": "404", + "httpStatusMessage": "Not Found", + "description": "Resource not found" + }, + { + "httpStatusCode": "422", + "httpStatusMessage": "Unprocessable Entity", + "description": "Validation failed" + } + ] + }, { "verb": "get", "requestPath": "/repos/{owner}/{repo}/releases", @@ -50528,14 +50942,14 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

tag+ parameter

" + "descriptionHTML": "

tag parameter

" } ], "x-codeSamples": [ @@ -52448,6 +52862,26 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -53043,7 +53477,7 @@ } ], "summary": "Create a repository using a template", - "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@2.18/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.18/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@2.18/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.18/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -53138,7 +53572,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -53214,7 +53648,7 @@ }, { "name": "visibility", - "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`.", + "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.", "in": "query", "required": false, "schema": { @@ -53226,7 +53660,7 @@ "public" ] }, - "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public.

" + "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.

" } ], "x-codeSamples": [ @@ -53242,7 +53676,7 @@ } ], "summary": "List public repositories", - "description": "Lists all public repositories in the order that they were created.\n\nNote: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@2.18/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", + "description": "Lists all public repositories in the order that they were created.\n\nNotes:\n- For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.\n- Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@2.18/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", "tags": [ "repos" ], @@ -53263,7 +53697,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.

", + "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Notes:

\n
    \n
  • For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.
  • \n
  • Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.
  • \n
", "responses": [ { "httpStatusCode": "200", @@ -60390,6 +60824,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -61547,7 +61982,7 @@ "parameters": [ { "name": "visibility", - "description": "Can be one of `all`, `public`, or `private`.", + "description": "Can be one of `all`, `public`, or `private`. Note: For GitHub AE, can be one of `all`, `internal`, or `private`.", "in": "query", "required": false, "schema": { @@ -61559,7 +61994,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, public, or private.

" + "descriptionHTML": "

Can be one of all, public, or private. Note: For GitHub AE, can be one of all, internal, or private.

" }, { "name": "affiliation", @@ -61574,7 +62009,7 @@ }, { "name": "type", - "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", + "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Note: For GitHub AE, can be one of `all`, `owner`, `internal`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", "in": "query", "required": false, "schema": { @@ -61588,7 +62023,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, owner, public, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" + "descriptionHTML": "

Can be one of all, owner, public, private, member. Note: For GitHub AE, can be one of all, owner, internal, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" }, { "name": "sort", @@ -61744,7 +62179,7 @@ } ], "summary": "Create a repository for the authenticated user", - "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.18/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.18/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository.", "tags": [ "repos" ], @@ -61787,13 +62222,13 @@ "childParamsGroups": [] }, "private": { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "has_issues": { @@ -61967,7 +62402,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository.
  • \n
", "bodyParameters": [ { "description": "

Required. The name of the repository.

", @@ -61998,13 +62433,13 @@ "childParamsGroups": [] }, { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { @@ -64498,7 +64933,7 @@ } ], "summary": "List repositories for a user", - "description": "Lists public repositories for the specified user.", + "description": "Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.", "tags": [ "repos" ], @@ -64526,7 +64961,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists public repositories for the specified user.

", + "descriptionHTML": "

Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.

", "responses": [ { "httpStatusCode": "200", diff --git a/lib/rest/static/decorated/ghes-2.19.json b/lib/rest/static/decorated/ghes-2.19.json index 99b430b10d..5648bc69f2 100644 --- a/lib/rest/static/decorated/ghes-2.19.json +++ b/lib/rest/static/decorated/ghes-2.19.json @@ -1070,6 +1070,46 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + }, + "descriptionHTML": "" + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Only show public keys accessed after the given time.

" } ], "x-codeSamples": [ @@ -1742,6 +1782,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -2340,6 +2410,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to) or name.

" } ], "x-codeSamples": [ @@ -5676,6 +5777,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -6278,6 +6389,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -10110,6 +10231,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -10328,6 +10450,16 @@ "default": 30 }, "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -13514,6 +13646,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -14530,6 +14663,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

The sort order for the response collection.

" } ], "x-codeSamples": [ @@ -15435,7 +15599,7 @@ }, { "name": "type", - "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", + "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Note: For GitHub AE, can be one of `all`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", "in": "query", "required": false, "schema": { @@ -15450,7 +15614,7 @@ "internal" ] }, - "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" + "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Note: For GitHub AE, can be one of all, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" }, { "name": "sort", @@ -15589,7 +15753,7 @@ } ], "summary": "Create an organization repository", - "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.19/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.19/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -15633,17 +15797,17 @@ }, "private": { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "visibility": { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -15653,7 +15817,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, "has_issues": { @@ -15814,7 +15978,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -15845,17 +16009,17 @@ }, { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -15865,7 +16029,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, { @@ -25427,7 +25591,7 @@ "name", "head_sha" ], - "anyOf": [ + "oneOf": [ { "properties": { "status": { @@ -25437,6 +25601,7 @@ } }, "required": [ + "status", "conclusion" ], "additionalProperties": true @@ -30691,6 +30856,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" } ], "x-codeSamples": [ @@ -31286,16 +31473,36 @@ }, "descriptionHTML": "" }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -31384,14 +31591,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "check_name", @@ -31452,6 +31659,15 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -31532,14 +31748,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "app_id", @@ -31661,14 +31877,34 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -31747,14 +31983,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -31951,14 +32187,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" }, { "name": "ref", @@ -32075,14 +32311,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -32598,14 +32834,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -33148,7 +33384,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true }, "descriptionHTML": "

The name of the environment that was deployed to (e.g., staging or production).

" }, @@ -34321,7 +34558,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" }, @@ -34346,6 +34584,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -34421,6 +34681,28 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -34450,6 +34732,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -35350,14 +35633,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -35451,14 +35734,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -35686,14 +35969,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -35829,14 +36112,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -36740,6 +37023,7 @@ "schema": { "type": "string" }, + "x-multi-segment": true, "descriptionHTML": "" }, { @@ -45624,6 +45908,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -46702,18 +47016,17 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] }, - "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to).

" + "descriptionHTML": "" }, { "name": "direction", @@ -50605,6 +50918,107 @@ } ] }, + { + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/readme/{dir}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true, + "descriptionHTML": "

The alternate path to look for a README file

" + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The name of the commit/branch/tag. Default: the repository’s default branch (usually master)

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/repos/octocat/hello-world/readme/DIR", + "html": "
curl \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/repos/octocat/hello-world/readme/DIR
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n owner: 'octocat',\n repo: 'hello-world',\n dir: 'dir'\n})", + "html": "
await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n  owner: 'octocat',\n  repo: 'hello-world',\n  dir: 'dir'\n})\n
" + } + ], + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@2.19/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@2.19/rest/reference/repos#get-a-repository-readme" + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [], + "category": "repos", + "subcategory": "contents" + }, + "slug": "get-a-repository-readme", + "category": "repos", + "categoryLabel": "Repos", + "subcategory": "contents", + "subcategoryLabel": "Contents", + "notes": [], + "bodyParameters": [], + "descriptionHTML": "

Gets the preferred README for a repository.

\n

READMEs support custom media types for retrieving the raw content or rendered HTML.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"type\": \"file\",\n  \"encoding\": \"base64\",\n  \"size\": 5362,\n  \"name\": \"README.md\",\n  \"path\": \"README.md\",\n  \"content\": \"encoded content ...\",\n  \"sha\": \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"url\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n  \"git_url\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"html_url\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n  \"download_url\": \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n  \"_links\": {\n    \"git\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n    \"self\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n    \"html\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\"\n  }\n}\n
" + }, + { + "httpStatusCode": "404", + "httpStatusMessage": "Not Found", + "description": "Resource not found" + }, + { + "httpStatusCode": "422", + "httpStatusMessage": "Unprocessable Entity", + "description": "Validation failed" + } + ] + }, { "verb": "get", "requestPath": "/repos/{owner}/{repo}/releases", @@ -51330,14 +51744,14 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

tag+ parameter

" + "descriptionHTML": "

tag parameter

" } ], "x-codeSamples": [ @@ -53250,6 +53664,26 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -53845,7 +54279,7 @@ } ], "summary": "Create a repository using a template", - "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@2.19/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.19/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@2.19/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.19/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -53940,7 +54374,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -54016,7 +54450,7 @@ }, { "name": "visibility", - "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`.", + "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.", "in": "query", "required": false, "schema": { @@ -54028,7 +54462,7 @@ "public" ] }, - "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public.

" + "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.

" } ], "x-codeSamples": [ @@ -54044,7 +54478,7 @@ } ], "summary": "List public repositories", - "description": "Lists all public repositories in the order that they were created.\n\nNote: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@2.19/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", + "description": "Lists all public repositories in the order that they were created.\n\nNotes:\n- For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.\n- Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@2.19/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", "tags": [ "repos" ], @@ -54065,7 +54499,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.

", + "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Notes:

\n
    \n
  • For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.
  • \n
  • Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.
  • \n
", "responses": [ { "httpStatusCode": "200", @@ -60980,6 +61414,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -62137,7 +62572,7 @@ "parameters": [ { "name": "visibility", - "description": "Can be one of `all`, `public`, or `private`.", + "description": "Can be one of `all`, `public`, or `private`. Note: For GitHub AE, can be one of `all`, `internal`, or `private`.", "in": "query", "required": false, "schema": { @@ -62149,7 +62584,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, public, or private.

" + "descriptionHTML": "

Can be one of all, public, or private. Note: For GitHub AE, can be one of all, internal, or private.

" }, { "name": "affiliation", @@ -62164,7 +62599,7 @@ }, { "name": "type", - "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", + "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Note: For GitHub AE, can be one of `all`, `owner`, `internal`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", "in": "query", "required": false, "schema": { @@ -62178,7 +62613,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, owner, public, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" + "descriptionHTML": "

Can be one of all, owner, public, private, member. Note: For GitHub AE, can be one of all, owner, internal, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" }, { "name": "sort", @@ -62334,7 +62769,7 @@ } ], "summary": "Create a repository for the authenticated user", - "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.19/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.19/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository.", "tags": [ "repos" ], @@ -62377,13 +62812,13 @@ "childParamsGroups": [] }, "private": { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "has_issues": { @@ -62557,7 +62992,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository.
  • \n
", "bodyParameters": [ { "description": "

Required. The name of the repository.

", @@ -62588,13 +63023,13 @@ "childParamsGroups": [] }, { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { @@ -65088,7 +65523,7 @@ } ], "summary": "List repositories for a user", - "description": "Lists public repositories for the specified user.", + "description": "Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.", "tags": [ "repos" ], @@ -65116,7 +65551,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists public repositories for the specified user.

", + "descriptionHTML": "

Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.

", "responses": [ { "httpStatusCode": "200", diff --git a/lib/rest/static/decorated/ghes-2.20.json b/lib/rest/static/decorated/ghes-2.20.json index f577efb584..7e96445ddc 100644 --- a/lib/rest/static/decorated/ghes-2.20.json +++ b/lib/rest/static/decorated/ghes-2.20.json @@ -1070,6 +1070,46 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + }, + "descriptionHTML": "" + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Only show public keys accessed after the given time.

" } ], "x-codeSamples": [ @@ -1735,6 +1775,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -2333,6 +2403,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to) or name.

" } ], "x-codeSamples": [ @@ -5669,6 +5770,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -6702,6 +6813,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -10584,6 +10705,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -10802,6 +10924,16 @@ "default": 30 }, "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -13988,6 +14120,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -15004,6 +15137,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

The sort order for the response collection.

" } ], "x-codeSamples": [ @@ -15909,7 +16073,7 @@ }, { "name": "type", - "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", + "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Note: For GitHub AE, can be one of `all`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", "in": "query", "required": false, "schema": { @@ -15924,7 +16088,7 @@ "internal" ] }, - "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" + "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Note: For GitHub AE, can be one of all, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" }, { "name": "sort", @@ -16063,7 +16227,7 @@ } ], "summary": "Create an organization repository", - "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.20/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.20/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -16107,17 +16271,17 @@ }, "private": { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "visibility": { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -16127,7 +16291,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, "has_issues": { @@ -16288,7 +16452,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -16319,17 +16483,17 @@ }, { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -16339,7 +16503,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, { @@ -25901,7 +26065,7 @@ "name", "head_sha" ], - "anyOf": [ + "oneOf": [ { "properties": { "status": { @@ -25911,6 +26075,7 @@ } }, "required": [ + "status", "conclusion" ], "additionalProperties": true @@ -31165,6 +31330,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" } ], "x-codeSamples": [ @@ -31760,16 +31947,36 @@ }, "descriptionHTML": "" }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -31858,14 +32065,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "check_name", @@ -31926,6 +32133,15 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -32006,14 +32222,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "app_id", @@ -32135,14 +32351,34 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -32221,14 +32457,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -32425,14 +32661,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" }, { "name": "ref", @@ -32549,14 +32785,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -33072,14 +33308,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -33622,7 +33858,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true }, "descriptionHTML": "

The name of the environment that was deployed to (e.g., staging or production).

" }, @@ -34795,7 +35032,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" }, @@ -34820,6 +35058,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -34895,6 +35155,28 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -34924,6 +35206,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -35824,14 +36107,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -35925,14 +36208,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -36160,14 +36443,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -36303,14 +36586,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -37214,6 +37497,7 @@ "schema": { "type": "string" }, + "x-multi-segment": true, "descriptionHTML": "" }, { @@ -46098,6 +46382,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -47176,18 +47490,17 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] }, - "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to).

" + "descriptionHTML": "" }, { "name": "direction", @@ -51261,6 +51574,107 @@ } ] }, + { + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/readme/{dir}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true, + "descriptionHTML": "

The alternate path to look for a README file

" + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The name of the commit/branch/tag. Default: the repository’s default branch (usually master)

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/repos/octocat/hello-world/readme/DIR", + "html": "
curl \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/repos/octocat/hello-world/readme/DIR
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n owner: 'octocat',\n repo: 'hello-world',\n dir: 'dir'\n})", + "html": "
await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n  owner: 'octocat',\n  repo: 'hello-world',\n  dir: 'dir'\n})\n
" + } + ], + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@2.20/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@2.20/rest/reference/repos#get-a-repository-readme" + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [], + "category": "repos", + "subcategory": "contents" + }, + "slug": "get-a-repository-readme", + "category": "repos", + "categoryLabel": "Repos", + "subcategory": "contents", + "subcategoryLabel": "Contents", + "notes": [], + "bodyParameters": [], + "descriptionHTML": "

Gets the preferred README for a repository.

\n

READMEs support custom media types for retrieving the raw content or rendered HTML.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"type\": \"file\",\n  \"encoding\": \"base64\",\n  \"size\": 5362,\n  \"name\": \"README.md\",\n  \"path\": \"README.md\",\n  \"content\": \"encoded content ...\",\n  \"sha\": \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"url\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n  \"git_url\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"html_url\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n  \"download_url\": \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n  \"_links\": {\n    \"git\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n    \"self\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n    \"html\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\"\n  }\n}\n
" + }, + { + "httpStatusCode": "404", + "httpStatusMessage": "Not Found", + "description": "Resource not found" + }, + { + "httpStatusCode": "422", + "httpStatusMessage": "Unprocessable Entity", + "description": "Validation failed" + } + ] + }, { "verb": "get", "requestPath": "/repos/{owner}/{repo}/releases", @@ -51986,14 +52400,14 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

tag+ parameter

" + "descriptionHTML": "

tag parameter

" } ], "x-codeSamples": [ @@ -53906,6 +54320,26 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -54501,7 +54935,7 @@ } ], "summary": "Create a repository using a template", - "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@2.20/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.20/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@2.20/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.20/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -54596,7 +55030,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -54672,7 +55106,7 @@ }, { "name": "visibility", - "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`.", + "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.", "in": "query", "required": false, "schema": { @@ -54684,7 +55118,7 @@ "public" ] }, - "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public.

" + "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.

" } ], "x-codeSamples": [ @@ -54700,7 +55134,7 @@ } ], "summary": "List public repositories", - "description": "Lists all public repositories in the order that they were created.\n\nNote: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@2.20/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", + "description": "Lists all public repositories in the order that they were created.\n\nNotes:\n- For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.\n- Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@2.20/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", "tags": [ "repos" ], @@ -54721,7 +55155,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.

", + "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Notes:

\n
    \n
  • For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.
  • \n
  • Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.
  • \n
", "responses": [ { "httpStatusCode": "200", @@ -61542,6 +61976,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -62699,7 +63134,7 @@ "parameters": [ { "name": "visibility", - "description": "Can be one of `all`, `public`, or `private`.", + "description": "Can be one of `all`, `public`, or `private`. Note: For GitHub AE, can be one of `all`, `internal`, or `private`.", "in": "query", "required": false, "schema": { @@ -62711,7 +63146,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, public, or private.

" + "descriptionHTML": "

Can be one of all, public, or private. Note: For GitHub AE, can be one of all, internal, or private.

" }, { "name": "affiliation", @@ -62726,7 +63161,7 @@ }, { "name": "type", - "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", + "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Note: For GitHub AE, can be one of `all`, `owner`, `internal`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", "in": "query", "required": false, "schema": { @@ -62740,7 +63175,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, owner, public, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" + "descriptionHTML": "

Can be one of all, owner, public, private, member. Note: For GitHub AE, can be one of all, owner, internal, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" }, { "name": "sort", @@ -62896,7 +63331,7 @@ } ], "summary": "Create a repository for the authenticated user", - "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.20/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.20/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository.", "tags": [ "repos" ], @@ -62939,13 +63374,13 @@ "childParamsGroups": [] }, "private": { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "has_issues": { @@ -63119,7 +63554,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository.
  • \n
", "bodyParameters": [ { "description": "

Required. The name of the repository.

", @@ -63150,13 +63585,13 @@ "childParamsGroups": [] }, { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { @@ -65650,7 +66085,7 @@ } ], "summary": "List repositories for a user", - "description": "Lists public repositories for the specified user.", + "description": "Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.", "tags": [ "repos" ], @@ -65678,7 +66113,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists public repositories for the specified user.

", + "descriptionHTML": "

Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.

", "responses": [ { "httpStatusCode": "200", diff --git a/lib/rest/static/decorated/ghes-2.21.json b/lib/rest/static/decorated/ghes-2.21.json index 3c95181390..7d7b841246 100644 --- a/lib/rest/static/decorated/ghes-2.21.json +++ b/lib/rest/static/decorated/ghes-2.21.json @@ -1070,6 +1070,46 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + }, + "descriptionHTML": "" + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Only show public keys accessed after the given time.

" } ], "x-codeSamples": [ @@ -1735,6 +1775,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -2333,6 +2403,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to) or name.

" } ], "x-codeSamples": [ @@ -5663,6 +5764,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -6696,6 +6807,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -10578,6 +10699,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -10796,6 +10918,16 @@ "default": 30 }, "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -13982,6 +14114,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -14998,6 +15131,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

The sort order for the response collection.

" } ], "x-codeSamples": [ @@ -15903,7 +16067,7 @@ }, { "name": "type", - "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", + "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Note: For GitHub AE, can be one of `all`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", "in": "query", "required": false, "schema": { @@ -15918,7 +16082,7 @@ "internal" ] }, - "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" + "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Note: For GitHub AE, can be one of all, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" }, { "name": "sort", @@ -16057,7 +16221,7 @@ } ], "summary": "Create an organization repository", - "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.21/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.21/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -16101,17 +16265,17 @@ }, "private": { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "visibility": { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -16121,7 +16285,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, "has_issues": { @@ -16282,7 +16446,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -16313,17 +16477,17 @@ }, { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -16333,7 +16497,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, { @@ -17203,6 +17367,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "pinned", + "in": "query", + "required": false, + "description": "Pinned discussions only filter", + "schema": { + "type": "string" + }, + "descriptionHTML": "

Pinned discussions only filter

" } ], "x-codeSamples": [ @@ -29368,7 +29542,7 @@ "name", "head_sha" ], - "anyOf": [ + "oneOf": [ { "properties": { "status": { @@ -29378,6 +29552,7 @@ } }, "required": [ + "status", "conclusion" ], "additionalProperties": true @@ -34725,6 +34900,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" } ], "x-codeSamples": [ @@ -35320,16 +35517,36 @@ }, "descriptionHTML": "" }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -35418,14 +35635,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "check_name", @@ -35486,6 +35703,15 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -35566,14 +35792,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "app_id", @@ -35695,14 +35921,34 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -35781,14 +36027,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -35985,14 +36231,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" }, { "name": "ref", @@ -36109,14 +36355,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -36632,14 +36878,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -37182,7 +37428,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true }, "descriptionHTML": "

The name of the environment that was deployed to (e.g., staging or production).

" }, @@ -38576,7 +38823,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" }, @@ -38601,6 +38849,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -38676,6 +38946,28 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -38705,6 +38997,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -39605,14 +39898,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -39706,14 +39999,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -39941,14 +40234,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -40084,14 +40377,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -40995,6 +41288,7 @@ "schema": { "type": "string" }, + "x-multi-segment": true, "descriptionHTML": "" }, { @@ -50065,6 +50359,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -51131,18 +51455,17 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] }, - "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to).

" + "descriptionHTML": "" }, { "name": "direction", @@ -55305,6 +55628,107 @@ } ] }, + { + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/readme/{dir}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true, + "descriptionHTML": "

The alternate path to look for a README file

" + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The name of the commit/branch/tag. Default: the repository’s default branch (usually master)

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/repos/octocat/hello-world/readme/DIR", + "html": "
curl \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/repos/octocat/hello-world/readme/DIR
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n owner: 'octocat',\n repo: 'hello-world',\n dir: 'dir'\n})", + "html": "
await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n  owner: 'octocat',\n  repo: 'hello-world',\n  dir: 'dir'\n})\n
" + } + ], + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@2.21/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@2.21/rest/reference/repos#get-a-repository-readme" + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [], + "category": "repos", + "subcategory": "contents" + }, + "slug": "get-a-repository-readme", + "category": "repos", + "categoryLabel": "Repos", + "subcategory": "contents", + "subcategoryLabel": "Contents", + "notes": [], + "bodyParameters": [], + "descriptionHTML": "

Gets the preferred README for a repository.

\n

READMEs support custom media types for retrieving the raw content or rendered HTML.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"type\": \"file\",\n  \"encoding\": \"base64\",\n  \"size\": 5362,\n  \"name\": \"README.md\",\n  \"path\": \"README.md\",\n  \"content\": \"encoded content ...\",\n  \"sha\": \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"url\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n  \"git_url\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"html_url\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n  \"download_url\": \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n  \"_links\": {\n    \"git\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n    \"self\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n    \"html\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\"\n  }\n}\n
" + }, + { + "httpStatusCode": "404", + "httpStatusMessage": "Not Found", + "description": "Resource not found" + }, + { + "httpStatusCode": "422", + "httpStatusMessage": "Unprocessable Entity", + "description": "Validation failed" + } + ] + }, { "verb": "get", "requestPath": "/repos/{owner}/{repo}/releases", @@ -56030,14 +56454,14 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

tag+ parameter

" + "descriptionHTML": "

tag parameter

" } ], "x-codeSamples": [ @@ -57950,6 +58374,26 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -58545,7 +58989,7 @@ } ], "summary": "Create a repository using a template", - "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@2.21/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.21/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@2.21/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.21/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -58640,7 +59084,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -58716,7 +59160,7 @@ }, { "name": "visibility", - "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`.", + "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.", "in": "query", "required": false, "schema": { @@ -58728,7 +59172,7 @@ "public" ] }, - "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public.

" + "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.

" } ], "x-codeSamples": [ @@ -58744,7 +59188,7 @@ } ], "summary": "List public repositories", - "description": "Lists all public repositories in the order that they were created.\n\nNote: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@2.21/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", + "description": "Lists all public repositories in the order that they were created.\n\nNotes:\n- For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.\n- Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@2.21/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", "tags": [ "repos" ], @@ -58765,7 +59209,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.

", + "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Notes:

\n
    \n
  • For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.
  • \n
  • Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.
  • \n
", "responses": [ { "httpStatusCode": "200", @@ -65760,6 +66204,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -66917,7 +67362,7 @@ "parameters": [ { "name": "visibility", - "description": "Can be one of `all`, `public`, or `private`.", + "description": "Can be one of `all`, `public`, or `private`. Note: For GitHub AE, can be one of `all`, `internal`, or `private`.", "in": "query", "required": false, "schema": { @@ -66929,7 +67374,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, public, or private.

" + "descriptionHTML": "

Can be one of all, public, or private. Note: For GitHub AE, can be one of all, internal, or private.

" }, { "name": "affiliation", @@ -66944,7 +67389,7 @@ }, { "name": "type", - "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", + "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Note: For GitHub AE, can be one of `all`, `owner`, `internal`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", "in": "query", "required": false, "schema": { @@ -66958,7 +67403,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, owner, public, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" + "descriptionHTML": "

Can be one of all, owner, public, private, member. Note: For GitHub AE, can be one of all, owner, internal, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" }, { "name": "sort", @@ -67114,7 +67559,7 @@ } ], "summary": "Create a repository for the authenticated user", - "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.21/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.21/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository.", "tags": [ "repos" ], @@ -67157,13 +67602,13 @@ "childParamsGroups": [] }, "private": { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "has_issues": { @@ -67337,7 +67782,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository.
  • \n
", "bodyParameters": [ { "description": "

Required. The name of the repository.

", @@ -67368,13 +67813,13 @@ "childParamsGroups": [] }, { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { @@ -69868,7 +70313,7 @@ } ], "summary": "List repositories for a user", - "description": "Lists public repositories for the specified user.", + "description": "Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.", "tags": [ "repos" ], @@ -69896,7 +70341,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists public repositories for the specified user.

", + "descriptionHTML": "

Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.

", "responses": [ { "httpStatusCode": "200", diff --git a/lib/rest/static/decorated/ghes-2.22.json b/lib/rest/static/decorated/ghes-2.22.json index 23c6a94413..8e0ce3a3ad 100644 --- a/lib/rest/static/decorated/ghes-2.22.json +++ b/lib/rest/static/decorated/ghes-2.22.json @@ -1070,6 +1070,46 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + }, + "descriptionHTML": "" + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Only show public keys accessed after the given time.

" } ], "x-codeSamples": [ @@ -1742,6 +1782,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -2340,6 +2410,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to) or name.

" } ], "x-codeSamples": [ @@ -5743,6 +5844,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -6770,6 +6881,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -12334,6 +12455,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -12553,6 +12675,16 @@ "default": 30 }, "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -14897,6 +15029,26 @@ "type": "integer" }, "descriptionHTML": "

Unique identifier of the self-hosted runner group.

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -16485,6 +16637,26 @@ "type": "string" }, "descriptionHTML": "

secret_name parameter

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -18186,6 +18358,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -19203,6 +19376,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

The sort order for the response collection.

" } ], "x-codeSamples": [ @@ -20108,7 +20312,7 @@ }, { "name": "type", - "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", + "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Note: For GitHub AE, can be one of `all`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", "in": "query", "required": false, "schema": { @@ -20123,7 +20327,7 @@ "internal" ] }, - "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" + "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Note: For GitHub AE, can be one of all, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" }, { "name": "sort", @@ -20262,7 +20466,7 @@ } ], "summary": "Create an organization repository", - "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.22/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.22/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -20306,17 +20510,17 @@ }, "private": { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "visibility": { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -20326,7 +20530,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, "has_issues": { @@ -20487,7 +20691,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -20518,17 +20722,17 @@ }, { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -20538,7 +20742,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, { @@ -21408,6 +21612,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "pinned", + "in": "query", + "required": false, + "description": "Pinned discussions only filter", + "schema": { + "type": "string" + }, + "descriptionHTML": "

Pinned discussions only filter

" } ], "x-codeSamples": [ @@ -36311,7 +36525,7 @@ "name", "head_sha" ], - "anyOf": [ + "oneOf": [ { "properties": { "status": { @@ -36321,6 +36535,7 @@ } }, "required": [ + "status", "conclusion" ], "additionalProperties": true @@ -40355,7 +40570,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "descriptionHTML": "

The Git reference for the results you want to list. The ref for a branch can be formatted either as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge.

" }, @@ -40369,6 +40584,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -40389,7 +40605,7 @@ } ], "summary": "List code scanning alerts for a repository", - "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used `ref` in the request).", + "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).", "tags": [ "code-scanning" ], @@ -40410,7 +40626,7 @@ "categoryLabel": "Code scanning", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all open code scanning alerts for the default branch (usually main\nor master). You must use an access token with the security_events scope to use\nthis endpoint. GitHub Apps must have the security_events read permission to use\nthis endpoint.

\n

The response includes a most_recent_instance object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used ref in the request).

", + "descriptionHTML": "

Lists all open code scanning alerts for the default branch (usually main\nor master). You must use an access token with the security_events scope to use\nthis endpoint. GitHub Apps must have the security_events read permission to use\nthis endpoint.

\n

The response includes a most_recent_instance object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used ref in the request).

", "responses": [ { "httpStatusCode": "200", @@ -40792,7 +41008,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "descriptionHTML": "

The Git reference for the analyses you want to list. The ref for a branch can be formatted either as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge.

" }, @@ -40905,7 +41121,7 @@ } ], "summary": "Upload an analysis as SARIF data", - "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", + "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nThere are two places where you can upload code scanning results.\n - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see \"[Triaging code scanning alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests).\"\n - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see \"[Managing code scanning alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository).\"\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", "operationId": "code-scanning/upload-sarif", "tags": [ "code-scanning" @@ -40934,11 +41150,11 @@ }, "ref": { "type": "string", - "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>.

", + "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>,\nrefs/pull/<number>/merge, or refs/pull/<number>/head.

", "name": "ref", "in": "body", "rawType": "string", - "rawDescription": "The full Git reference, formatted as `refs/heads/`.", + "rawDescription": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`.", "childParamsGroups": [] }, "sarif": { @@ -41000,7 +41216,7 @@ "category": "code-scanning", "categoryLabel": "Code scanning", "notes": [], - "descriptionHTML": "

Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events write permission to use this endpoint.

\n

You must compress the SARIF-formatted analysis data that you want to upload, using gzip, and then encode it as a Base64 format string. For example:

\n
gzip -c analysis-data.sarif | base64\n
\n

SARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.

\n

The 202 Accepted, response includes an id value.\nYou can use this ID to check the status of the upload by using this for the /sarifs/{sarif_id} endpoint.\nFor more information, see \"Get information about a SARIF upload.\"

", + "descriptionHTML": "

Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events write permission to use this endpoint.

\n

There are two places where you can upload code scanning results.

\n\n

You must compress the SARIF-formatted analysis data that you want to upload, using gzip, and then encode it as a Base64 format string. For example:

\n
gzip -c analysis-data.sarif | base64\n
\n

SARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.

\n

The 202 Accepted, response includes an id value.\nYou can use this ID to check the status of the upload by using this for the /sarifs/{sarif_id} endpoint.\nFor more information, see \"Get information about a SARIF upload.\"

", "bodyParameters": [ { "description": "

Required. The SHA of the commit to which the analysis you are uploading relates.

", @@ -41016,11 +41232,11 @@ }, { "type": "string", - "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>.

", + "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>,\nrefs/pull/<number>/merge, or refs/pull/<number>/head.

", "name": "ref", "in": "body", "rawType": "string", - "rawDescription": "The full Git reference, formatted as `refs/heads/`.", + "rawDescription": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`.", "childParamsGroups": [] }, { @@ -42483,6 +42699,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" } ], "x-codeSamples": [ @@ -43078,16 +43316,36 @@ }, "descriptionHTML": "" }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -43176,14 +43434,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "check_name", @@ -43244,6 +43502,15 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -43324,14 +43591,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "app_id", @@ -43453,14 +43720,34 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -43539,14 +43826,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -43743,14 +44030,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" }, { "name": "ref", @@ -43867,14 +44154,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -44390,14 +44677,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -44940,7 +45227,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true }, "descriptionHTML": "

The name of the environment that was deployed to (e.g., staging or production).

" }, @@ -46322,7 +46610,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" }, @@ -46347,6 +46636,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -46422,6 +46733,28 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -46451,6 +46784,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -47351,14 +47685,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -47452,14 +47786,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -47687,14 +48021,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -47830,14 +48164,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -48741,6 +49075,7 @@ "schema": { "type": "string" }, + "x-multi-segment": true, "descriptionHTML": "" }, { @@ -57760,6 +58095,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -58814,18 +59179,17 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] }, - "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to).

" + "descriptionHTML": "" }, { "name": "direction", @@ -62982,6 +63346,107 @@ } ] }, + { + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/readme/{dir}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true, + "descriptionHTML": "

The alternate path to look for a README file

" + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The name of the commit/branch/tag. Default: the repository’s default branch (usually master)

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/repos/octocat/hello-world/readme/DIR", + "html": "
curl \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/repos/octocat/hello-world/readme/DIR
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n owner: 'octocat',\n repo: 'hello-world',\n dir: 'dir'\n})", + "html": "
await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n  owner: 'octocat',\n  repo: 'hello-world',\n  dir: 'dir'\n})\n
" + } + ], + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@2.22/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@2.22/rest/reference/repos#get-a-repository-readme" + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [], + "category": "repos", + "subcategory": "contents" + }, + "slug": "get-a-repository-readme", + "category": "repos", + "categoryLabel": "Repos", + "subcategory": "contents", + "subcategoryLabel": "Contents", + "notes": [], + "bodyParameters": [], + "descriptionHTML": "

Gets the preferred README for a repository.

\n

READMEs support custom media types for retrieving the raw content or rendered HTML.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"type\": \"file\",\n  \"encoding\": \"base64\",\n  \"size\": 5362,\n  \"name\": \"README.md\",\n  \"path\": \"README.md\",\n  \"content\": \"encoded content ...\",\n  \"sha\": \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"url\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n  \"git_url\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"html_url\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n  \"download_url\": \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n  \"_links\": {\n    \"git\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n    \"self\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n    \"html\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\"\n  }\n}\n
" + }, + { + "httpStatusCode": "404", + "httpStatusMessage": "Not Found", + "description": "Resource not found" + }, + { + "httpStatusCode": "422", + "httpStatusMessage": "Unprocessable Entity", + "description": "Validation failed" + } + ] + }, { "verb": "get", "requestPath": "/repos/{owner}/{repo}/releases", @@ -63707,14 +64172,14 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

tag+ parameter

" + "descriptionHTML": "

tag parameter

" } ], "x-codeSamples": [ @@ -65627,6 +66092,26 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -66222,7 +66707,7 @@ } ], "summary": "Create a repository using a template", - "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@2.22/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.22/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@2.22/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.22/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -66317,7 +66802,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -66393,7 +66878,7 @@ }, { "name": "visibility", - "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`.", + "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.", "in": "query", "required": false, "schema": { @@ -66405,7 +66890,7 @@ "public" ] }, - "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public.

" + "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.

" } ], "x-codeSamples": [ @@ -66421,7 +66906,7 @@ } ], "summary": "List public repositories", - "description": "Lists all public repositories in the order that they were created.\n\nNote: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@2.22/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", + "description": "Lists all public repositories in the order that they were created.\n\nNotes:\n- For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.\n- Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@2.22/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", "tags": [ "repos" ], @@ -66442,7 +66927,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.

", + "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Notes:

\n
    \n
  • For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.
  • \n
  • Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.
  • \n
", "responses": [ { "httpStatusCode": "200", @@ -73388,6 +73873,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -74546,7 +75032,7 @@ "parameters": [ { "name": "visibility", - "description": "Can be one of `all`, `public`, or `private`.", + "description": "Can be one of `all`, `public`, or `private`. Note: For GitHub AE, can be one of `all`, `internal`, or `private`.", "in": "query", "required": false, "schema": { @@ -74558,7 +75044,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, public, or private.

" + "descriptionHTML": "

Can be one of all, public, or private. Note: For GitHub AE, can be one of all, internal, or private.

" }, { "name": "affiliation", @@ -74573,7 +75059,7 @@ }, { "name": "type", - "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", + "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Note: For GitHub AE, can be one of `all`, `owner`, `internal`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", "in": "query", "required": false, "schema": { @@ -74587,7 +75073,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, owner, public, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" + "descriptionHTML": "

Can be one of all, owner, public, private, member. Note: For GitHub AE, can be one of all, owner, internal, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" }, { "name": "sort", @@ -74743,7 +75229,7 @@ } ], "summary": "Create a repository for the authenticated user", - "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.22/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@2.22/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository.", "tags": [ "repos" ], @@ -74786,13 +75272,13 @@ "childParamsGroups": [] }, "private": { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "has_issues": { @@ -74966,7 +75452,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository.
  • \n
", "bodyParameters": [ { "description": "

Required. The name of the repository.

", @@ -74997,13 +75483,13 @@ "childParamsGroups": [] }, { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { @@ -77480,7 +77966,7 @@ } ], "summary": "List repositories for a user", - "description": "Lists public repositories for the specified user.", + "description": "Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.", "tags": [ "repos" ], @@ -77508,7 +77994,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists public repositories for the specified user.

", + "descriptionHTML": "

Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.

", "responses": [ { "httpStatusCode": "200", diff --git a/lib/rest/static/decorated/ghes-3.0.json b/lib/rest/static/decorated/ghes-3.0.json index 1bf6c63efc..5bbbd36192 100644 --- a/lib/rest/static/decorated/ghes-3.0.json +++ b/lib/rest/static/decorated/ghes-3.0.json @@ -1070,6 +1070,46 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + }, + "descriptionHTML": "" + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Only show public keys accessed after the given time.

" } ], "x-codeSamples": [ @@ -1742,6 +1782,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -2340,6 +2410,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to) or name.

" } ], "x-codeSamples": [ @@ -5945,6 +6046,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -8793,6 +8904,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + }, + "descriptionHTML": "

The client ID of your GitHub app.

" } ], "x-codeSamples": [ @@ -15291,6 +15412,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -15510,6 +15632,16 @@ "default": 30 }, "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -18587,6 +18719,26 @@ "type": "integer" }, "descriptionHTML": "

Unique identifier of the self-hosted runner group.

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -20175,6 +20327,26 @@ "type": "string" }, "descriptionHTML": "

secret_name parameter

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -22116,6 +22288,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -23133,6 +23306,37 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "

The sort order for the response collection.

" } ], "x-codeSamples": [ @@ -24038,7 +24242,7 @@ }, { "name": "type", - "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", + "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Note: For GitHub AE, can be one of `all`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", "in": "query", "required": false, "schema": { @@ -24053,7 +24257,7 @@ "internal" ] }, - "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" + "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Note: For GitHub AE, can be one of all, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" }, { "name": "sort", @@ -24192,7 +24396,7 @@ } ], "summary": "Create an organization repository", - "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@3.0/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@3.0/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -24236,17 +24440,17 @@ }, "private": { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "visibility": { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -24256,7 +24460,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, "has_issues": { @@ -24417,7 +24621,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -24448,17 +24652,17 @@ }, { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -24468,7 +24672,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, { @@ -25338,6 +25542,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "pinned", + "in": "query", + "required": false, + "description": "Pinned discussions only filter", + "schema": { + "type": "string" + }, + "descriptionHTML": "

Pinned discussions only filter

" } ], "x-codeSamples": [ @@ -40826,7 +41040,7 @@ "name", "head_sha" ], - "anyOf": [ + "oneOf": [ { "properties": { "status": { @@ -40836,6 +41050,7 @@ } }, "required": [ + "status", "conclusion" ], "additionalProperties": true @@ -44807,7 +45022,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "descriptionHTML": "

The Git reference for the results you want to list. The ref for a branch can be formatted either as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge.

" }, @@ -44821,6 +45036,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -44841,7 +45057,7 @@ } ], "summary": "List code scanning alerts for a repository", - "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used `ref` in the request).", + "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).", "tags": [ "code-scanning" ], @@ -44862,7 +45078,7 @@ "categoryLabel": "Code scanning", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all open code scanning alerts for the default branch (usually main\nor master). You must use an access token with the security_events scope to use\nthis endpoint. GitHub Apps must have the security_events read permission to use\nthis endpoint.

\n

The response includes a most_recent_instance object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used ref in the request).

", + "descriptionHTML": "

Lists all open code scanning alerts for the default branch (usually main\nor master). You must use an access token with the security_events scope to use\nthis endpoint. GitHub Apps must have the security_events read permission to use\nthis endpoint.

\n

The response includes a most_recent_instance object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used ref in the request).

", "responses": [ { "httpStatusCode": "200", @@ -45244,7 +45460,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "descriptionHTML": "

The Git reference for the analyses you want to list. The ref for a branch can be formatted either as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge.

" }, @@ -45357,7 +45573,7 @@ } ], "summary": "Upload an analysis as SARIF data", - "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", + "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nThere are two places where you can upload code scanning results.\n - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see \"[Triaging code scanning alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests).\"\n - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see \"[Managing code scanning alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository).\"\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", "operationId": "code-scanning/upload-sarif", "tags": [ "code-scanning" @@ -45386,11 +45602,11 @@ }, "ref": { "type": "string", - "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>.

", + "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>,\nrefs/pull/<number>/merge, or refs/pull/<number>/head.

", "name": "ref", "in": "body", "rawType": "string", - "rawDescription": "The full Git reference, formatted as `refs/heads/`.", + "rawDescription": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`.", "childParamsGroups": [] }, "sarif": { @@ -45452,7 +45668,7 @@ "category": "code-scanning", "categoryLabel": "Code scanning", "notes": [], - "descriptionHTML": "

Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events write permission to use this endpoint.

\n

You must compress the SARIF-formatted analysis data that you want to upload, using gzip, and then encode it as a Base64 format string. For example:

\n
gzip -c analysis-data.sarif | base64\n
\n

SARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.

\n

The 202 Accepted, response includes an id value.\nYou can use this ID to check the status of the upload by using this for the /sarifs/{sarif_id} endpoint.\nFor more information, see \"Get information about a SARIF upload.\"

", + "descriptionHTML": "

Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events write permission to use this endpoint.

\n

There are two places where you can upload code scanning results.

\n\n

You must compress the SARIF-formatted analysis data that you want to upload, using gzip, and then encode it as a Base64 format string. For example:

\n
gzip -c analysis-data.sarif | base64\n
\n

SARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.

\n

The 202 Accepted, response includes an id value.\nYou can use this ID to check the status of the upload by using this for the /sarifs/{sarif_id} endpoint.\nFor more information, see \"Get information about a SARIF upload.\"

", "bodyParameters": [ { "description": "

Required. The SHA of the commit to which the analysis you are uploading relates.

", @@ -45468,11 +45684,11 @@ }, { "type": "string", - "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>.

", + "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>,\nrefs/pull/<number>/merge, or refs/pull/<number>/head.

", "name": "ref", "in": "body", "rawType": "string", - "rawDescription": "The full Git reference, formatted as `refs/heads/`.", + "rawDescription": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`.", "childParamsGroups": [] }, { @@ -46935,6 +47151,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" } ], "x-codeSamples": [ @@ -47530,16 +47768,36 @@ }, "descriptionHTML": "" }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -47628,14 +47886,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "check_name", @@ -47696,6 +47954,15 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -47769,14 +48036,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "app_id", @@ -47891,14 +48158,34 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -47977,14 +48264,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -48181,14 +48468,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" }, { "name": "ref", @@ -48305,14 +48592,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -48828,14 +49115,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -49378,7 +49665,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true }, "descriptionHTML": "

The name of the environment that was deployed to (e.g., staging or production).

" }, @@ -50760,7 +51048,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" }, @@ -50785,6 +51074,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -50860,6 +51171,28 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -50889,6 +51222,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -51789,14 +52123,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -51890,14 +52224,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -52125,14 +52459,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -52268,14 +52602,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -53179,6 +53513,7 @@ "schema": { "type": "string" }, + "x-multi-segment": true, "descriptionHTML": "" }, { @@ -62456,6 +62791,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -63510,18 +63875,17 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] }, - "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to).

" + "descriptionHTML": "" }, { "name": "direction", @@ -67678,6 +68042,107 @@ } ] }, + { + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/readme/{dir}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true, + "descriptionHTML": "

The alternate path to look for a README file

" + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The name of the commit/branch/tag. Default: the repository’s default branch (usually master)

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/repos/octocat/hello-world/readme/DIR", + "html": "
curl \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/repos/octocat/hello-world/readme/DIR
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n owner: 'octocat',\n repo: 'hello-world',\n dir: 'dir'\n})", + "html": "
await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n  owner: 'octocat',\n  repo: 'hello-world',\n  dir: 'dir'\n})\n
" + } + ], + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@3.0/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@3.0/rest/reference/repos#get-a-repository-readme" + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [], + "category": "repos", + "subcategory": "contents" + }, + "slug": "get-a-repository-readme", + "category": "repos", + "categoryLabel": "Repos", + "subcategory": "contents", + "subcategoryLabel": "Contents", + "notes": [], + "bodyParameters": [], + "descriptionHTML": "

Gets the preferred README for a repository.

\n

READMEs support custom media types for retrieving the raw content or rendered HTML.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"type\": \"file\",\n  \"encoding\": \"base64\",\n  \"size\": 5362,\n  \"name\": \"README.md\",\n  \"path\": \"README.md\",\n  \"content\": \"encoded content ...\",\n  \"sha\": \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"url\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n  \"git_url\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"html_url\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n  \"download_url\": \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n  \"_links\": {\n    \"git\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n    \"self\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n    \"html\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\"\n  }\n}\n
" + }, + { + "httpStatusCode": "404", + "httpStatusMessage": "Not Found", + "description": "Resource not found" + }, + { + "httpStatusCode": "422", + "httpStatusMessage": "Unprocessable Entity", + "description": "Validation failed" + } + ] + }, { "verb": "get", "requestPath": "/repos/{owner}/{repo}/releases", @@ -68403,14 +68868,14 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

tag+ parameter

" + "descriptionHTML": "

tag parameter

" } ], "x-codeSamples": [ @@ -70323,6 +70788,26 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -70918,7 +71403,7 @@ } ], "summary": "Create a repository using a template", - "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@3.0/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@3.0/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/enterprise-server@3.0/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@3.0/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -71013,7 +71498,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -71089,7 +71574,7 @@ }, { "name": "visibility", - "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`.", + "description": "Specifies the types of repositories to return. Can be one of `all` or `public`. Default: `public`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.", "in": "query", "required": false, "schema": { @@ -71101,7 +71586,7 @@ "public" ] }, - "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public.

" + "descriptionHTML": "

Specifies the types of repositories to return. Can be one of all or public. Default: public. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.

" } ], "x-codeSamples": [ @@ -71117,7 +71602,7 @@ } ], "summary": "List public repositories", - "description": "Lists all public repositories in the order that they were created.\n\nNote: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@3.0/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", + "description": "Lists all public repositories in the order that they were created.\n\nNotes:\n- For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.\n- Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/enterprise-server@3.0/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", "tags": [ "repos" ], @@ -71138,7 +71623,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.

", + "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Notes:

\n
    \n
  • For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.
  • \n
  • Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.
  • \n
", "responses": [ { "httpStatusCode": "200", @@ -78084,6 +78569,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -79242,7 +79728,7 @@ "parameters": [ { "name": "visibility", - "description": "Can be one of `all`, `public`, or `private`.", + "description": "Can be one of `all`, `public`, or `private`. Note: For GitHub AE, can be one of `all`, `internal`, or `private`.", "in": "query", "required": false, "schema": { @@ -79254,7 +79740,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, public, or private.

" + "descriptionHTML": "

Can be one of all, public, or private. Note: For GitHub AE, can be one of all, internal, or private.

" }, { "name": "affiliation", @@ -79269,7 +79755,7 @@ }, { "name": "type", - "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", + "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Note: For GitHub AE, can be one of `all`, `owner`, `internal`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", "in": "query", "required": false, "schema": { @@ -79283,7 +79769,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, owner, public, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" + "descriptionHTML": "

Can be one of all, owner, public, private, member. Note: For GitHub AE, can be one of all, owner, internal, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" }, { "name": "sort", @@ -79439,7 +79925,7 @@ } ], "summary": "Create a repository for the authenticated user", - "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@3.0/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/enterprise-server@3.0/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository.", "tags": [ "repos" ], @@ -79482,13 +79968,13 @@ "childParamsGroups": [] }, "private": { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "has_issues": { @@ -79662,7 +80148,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository.
  • \n
", "bodyParameters": [ { "description": "

Required. The name of the repository.

", @@ -79693,13 +80179,13 @@ "childParamsGroups": [] }, { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { @@ -82176,7 +82662,7 @@ } ], "summary": "List repositories for a user", - "description": "Lists public repositories for the specified user.", + "description": "Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.", "tags": [ "repos" ], @@ -82204,7 +82690,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists public repositories for the specified user.

", + "descriptionHTML": "

Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.

", "responses": [ { "httpStatusCode": "200", diff --git a/lib/rest/static/decorated/github.ae.json b/lib/rest/static/decorated/github.ae.json index 714b4662e6..e4ca8530a1 100644 --- a/lib/rest/static/decorated/github.ae.json +++ b/lib/rest/static/decorated/github.ae.json @@ -1070,6 +1070,46 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + }, + "descriptionHTML": "" + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Only show public keys accessed after the given time.

" } ], "x-codeSamples": [ @@ -1425,6 +1465,36 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + }, + "descriptionHTML": "

One of asc (ascending) or desc (descending).

" + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -10709,6 +10779,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -10928,6 +10999,16 @@ "default": 30 }, "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -14451,6 +14532,26 @@ "type": "string" }, "descriptionHTML": "

secret_name parameter

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -16392,6 +16493,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -17943,7 +18045,7 @@ }, { "name": "type", - "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", + "description": "Specifies the types of repositories you want returned. Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`, `internal`. Note: For GitHub AE, can be one of `all`, `private`, `forks`, `sources`, `member`, `internal`. Default: `all`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `type` can also be `internal`.", "in": "query", "required": false, "schema": { @@ -17958,7 +18060,7 @@ "internal" ] }, - "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" + "descriptionHTML": "

Specifies the types of repositories you want returned. Can be one of all, public, private, forks, sources, member, internal. Note: For GitHub AE, can be one of all, private, forks, sources, member, internal. Default: all. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, type can also be internal.

" }, { "name": "sort", @@ -18097,7 +18199,7 @@ } ], "summary": "Create an organization repository", - "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/github-ae@latest/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository in the specified organization. The authenticated user must be a member of the organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/github-ae@latest/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -18141,17 +18243,17 @@ }, "private": { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "visibility": { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -18161,7 +18263,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, "has_issues": { @@ -18322,7 +18424,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository in the specified organization. The authenticated user must be a member of the organization.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -18353,17 +18455,17 @@ }, { "type": "boolean", - "description": "

Either true to create a private repository or false to create a public one.

", + "description": "

Whether the repository is private.

", "default": false, "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Either `true` to create a private repository or `false` to create a public one.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { "type": "string", - "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", + "description": "

Can be public or private. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, visibility can also be internal. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"Creating an internal repository\" in the GitHub Help documentation.
\nThe visibility parameter overrides the private parameter when you use both parameters with the nebula-preview preview header.

", "enum": [ "public", "private", @@ -18373,7 +18475,7 @@ "name": "visibility", "in": "body", "rawType": "string", - "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", + "rawDescription": "Can be `public` or `private`. If your organization is associated with an enterprise account using GitHub Enterprise Cloud or GitHub Enterprise Server 2.20+, `visibility` can also be `internal`. Note: For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise. For more information, see \"[Creating an internal repository](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-repository-visibility#about-internal-repositories)\" in the GitHub Help documentation. \nThe `visibility` parameter overrides the `private` parameter when you use both parameters with the `nebula-preview` preview header.", "childParamsGroups": [] }, { @@ -19243,6 +19345,16 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "pinned", + "in": "query", + "required": false, + "description": "Pinned discussions only filter", + "schema": { + "type": "string" + }, + "descriptionHTML": "

Pinned discussions only filter

" } ], "x-codeSamples": [ @@ -34966,7 +35078,7 @@ "name", "head_sha" ], - "anyOf": [ + "oneOf": [ { "properties": { "status": { @@ -34976,6 +35088,7 @@ } }, "required": [ + "status", "conclusion" ], "additionalProperties": true @@ -38947,7 +39060,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "descriptionHTML": "

The Git reference for the results you want to list. The ref for a branch can be formatted either as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge.

" }, @@ -38961,6 +39074,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -38981,7 +39095,7 @@ } ], "summary": "List code scanning alerts for a repository", - "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used `ref` in the request).", + "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).", "tags": [ "code-scanning" ], @@ -39002,7 +39116,7 @@ "categoryLabel": "Code scanning", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all open code scanning alerts for the default branch (usually main\nor master). You must use an access token with the security_events scope to use\nthis endpoint. GitHub Apps must have the security_events read permission to use\nthis endpoint.

\n

The response includes a most_recent_instance object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used ref in the request).

", + "descriptionHTML": "

Lists all open code scanning alerts for the default branch (usually main\nor master). You must use an access token with the security_events scope to use\nthis endpoint. GitHub Apps must have the security_events read permission to use\nthis endpoint.

\n

The response includes a most_recent_instance object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used ref in the request).

", "responses": [ { "httpStatusCode": "200", @@ -39374,7 +39488,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "descriptionHTML": "

The Git reference for the results you want to list. The ref for a branch can be formatted either as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge.

" } @@ -39511,7 +39625,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "descriptionHTML": "

The Git reference for the analyses you want to list. The ref for a branch can be formatted either as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge.

" }, @@ -39716,7 +39830,7 @@ } ], "summary": "Upload an analysis as SARIF data", - "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", + "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nThere are two places where you can upload code scanning results.\n - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see \"[Triaging code scanning alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests).\"\n - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see \"[Managing code scanning alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository).\"\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", "operationId": "code-scanning/upload-sarif", "tags": [ "code-scanning" @@ -39745,11 +39859,11 @@ }, "ref": { "type": "string", - "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>.

", + "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>,\nrefs/pull/<number>/merge, or refs/pull/<number>/head.

", "name": "ref", "in": "body", "rawType": "string", - "rawDescription": "The full Git reference, formatted as `refs/heads/`.", + "rawDescription": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`.", "childParamsGroups": [] }, "sarif": { @@ -39811,7 +39925,7 @@ "category": "code-scanning", "categoryLabel": "Code scanning", "notes": [], - "descriptionHTML": "

Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events write permission to use this endpoint.

\n

You must compress the SARIF-formatted analysis data that you want to upload, using gzip, and then encode it as a Base64 format string. For example:

\n
gzip -c analysis-data.sarif | base64\n
\n

SARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.

\n

The 202 Accepted, response includes an id value.\nYou can use this ID to check the status of the upload by using this for the /sarifs/{sarif_id} endpoint.\nFor more information, see \"Get information about a SARIF upload.\"

", + "descriptionHTML": "

Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events write permission to use this endpoint.

\n

There are two places where you can upload code scanning results.

\n\n

You must compress the SARIF-formatted analysis data that you want to upload, using gzip, and then encode it as a Base64 format string. For example:

\n
gzip -c analysis-data.sarif | base64\n
\n

SARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.

\n

The 202 Accepted, response includes an id value.\nYou can use this ID to check the status of the upload by using this for the /sarifs/{sarif_id} endpoint.\nFor more information, see \"Get information about a SARIF upload.\"

", "bodyParameters": [ { "description": "

Required. The SHA of the commit to which the analysis you are uploading relates.

", @@ -39827,11 +39941,11 @@ }, { "type": "string", - "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>.

", + "description": "

Required. The full Git reference, formatted as refs/heads/<branch name>,\nrefs/pull/<number>/merge, or refs/pull/<number>/head.

", "name": "ref", "in": "body", "rawType": "string", - "rawDescription": "The full Git reference, formatted as `refs/heads/`.", + "rawDescription": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`.", "childParamsGroups": [] }, { @@ -41386,6 +41500,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy parameter for pagination.

" } ], "x-codeSamples": [ @@ -41981,16 +42117,36 @@ }, "descriptionHTML": "" }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -42079,14 +42235,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "check_name", @@ -42147,6 +42303,15 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + }, + "descriptionHTML": "" } ], "x-codeSamples": [ @@ -42220,14 +42385,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "app_id", @@ -42342,14 +42507,34 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" } ], "x-codeSamples": [ @@ -42428,14 +42613,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -42632,14 +42817,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" }, { "name": "ref", @@ -42756,14 +42941,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -43279,14 +43464,14 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

path+ parameter

" + "descriptionHTML": "

path parameter

" } ], "x-codeSamples": [ @@ -43829,7 +44014,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true }, "descriptionHTML": "

The name of the environment that was deployed to (e.g., staging or production).

" }, @@ -45689,7 +45875,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" }, @@ -45714,6 +45901,28 @@ "default": 1 }, "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -45789,6 +45998,28 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

legacy query parameter for specifying the org.

" } ], "x-codeSamples": [ @@ -45818,6 +46049,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -46718,14 +46950,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" }, { "name": "per_page", @@ -46819,14 +47051,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -47054,14 +47286,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -47197,14 +47429,14 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

ref+ parameter

" + "descriptionHTML": "

ref parameter

" } ], "x-codeSamples": [ @@ -48108,6 +48340,7 @@ "schema": { "type": "string" }, + "x-multi-segment": true, "descriptionHTML": "" }, { @@ -58051,18 +58284,17 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] }, - "descriptionHTML": "

One of created (when the repository was starred) or updated (when it was last pushed to).

" + "descriptionHTML": "" }, { "name": "direction", @@ -62219,6 +62451,107 @@ } ] }, + { + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/readme/{dir}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "" + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true, + "descriptionHTML": "

The alternate path to look for a README file

" + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The name of the commit/branch/tag. Default: the repository’s default branch (usually master)

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/repos/octocat/hello-world/readme/DIR", + "html": "
curl \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/repos/octocat/hello-world/readme/DIR
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n owner: 'octocat',\n repo: 'hello-world',\n dir: 'dir'\n})", + "html": "
await octokit.request('GET /repos/{owner}/{repo}/readme/{dir}', {\n  owner: 'octocat',\n  repo: 'hello-world',\n  dir: 'dir'\n})\n
" + } + ], + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/github-ae@latest/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/repos#get-a-repository-readme" + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [], + "category": "repos", + "subcategory": "contents" + }, + "slug": "get-a-repository-readme", + "category": "repos", + "categoryLabel": "Repos", + "subcategory": "contents", + "subcategoryLabel": "Contents", + "notes": [], + "bodyParameters": [], + "descriptionHTML": "

Gets the preferred README for a repository.

\n

READMEs support custom media types for retrieving the raw content or rendered HTML.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"type\": \"file\",\n  \"encoding\": \"base64\",\n  \"size\": 5362,\n  \"name\": \"README.md\",\n  \"path\": \"README.md\",\n  \"content\": \"encoded content ...\",\n  \"sha\": \"3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"url\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n  \"git_url\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n  \"html_url\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\",\n  \"download_url\": \"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md\",\n  \"_links\": {\n    \"git\": \"https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1\",\n    \"self\": \"https://api.github.com/repos/octokit/octokit.rb/contents/README.md\",\n    \"html\": \"https://github.com/octokit/octokit.rb/blob/master/README.md\"\n  }\n}\n
" + }, + { + "httpStatusCode": "404", + "httpStatusMessage": "Not Found", + "description": "Resource not found" + }, + { + "httpStatusCode": "422", + "httpStatusMessage": "Unprocessable Entity", + "description": "Validation failed" + } + ] + }, { "verb": "get", "requestPath": "/repos/{owner}/{repo}/releases", @@ -62944,14 +63277,14 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true, - "descriptionHTML": "

tag+ parameter

" + "descriptionHTML": "

tag parameter

" } ], "x-codeSamples": [ @@ -64864,6 +65197,26 @@ "type": "string" }, "descriptionHTML": "" + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + }, + "descriptionHTML": "

Page number of the results to fetch.

" + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + }, + "descriptionHTML": "

Results per page (max 100).

" } ], "x-codeSamples": [ @@ -65459,7 +65812,7 @@ } ], "summary": "Create a repository using a template", - "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/github-ae@latest/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/github-ae@latest/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [Get a repository](https://docs.github.com/github-ae@latest/rest/reference/repos#get-a-repository) endpoint and check that the `is_template` key is `true`.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/github-ae@latest/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository", "tags": [ "repos" ], @@ -65554,7 +65907,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository using a repository template. Use the template_owner and template_repo route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the Get a repository endpoint and check that the is_template key is true.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository
  • \n
", "bodyParameters": [ { "type": "string", @@ -65642,7 +65995,7 @@ } ], "summary": "List public repositories", - "description": "Lists all public repositories in the order that they were created.\n\nNote: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/github-ae@latest/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", + "description": "Lists all public repositories in the order that they were created.\n\nNotes:\n- For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.\n- Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://docs.github.com/github-ae@latest/rest/overview/resources-in-the-rest-api#link-header) to get the URL for the next page of repositories.", "tags": [ "repos" ], @@ -65663,7 +66016,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.

", + "descriptionHTML": "

Lists all public repositories in the order that they were created.

\n

Notes:

\n
    \n
  • For GitHub Enterprise Server and GitHub AE, this endpoint will only list repositories available to all users on the enterprise.
  • \n
  • Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of repositories.
  • \n
", "responses": [ { "httpStatusCode": "200", @@ -66145,6 +66498,1051 @@ "bodyParameters": [], "descriptionHTML": "

Deletes a secret in an environment using the secret name. You must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the secrets repository permission to use this endpoint.

" }, + { + "verb": "get", + "requestPath": "/scim/v2/enterprises/{enterprise}/Groups", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

" + }, + { + "name": "startIndex", + "description": "Used for pagination: the index of the first result to return.", + "in": "query", + "required": false, + "schema": { + "type": "integer" + }, + "descriptionHTML": "

Used for pagination: the index of the first result to return.

" + }, + { + "name": "count", + "description": "Used for pagination: the number of results to return.", + "in": "query", + "required": false, + "schema": { + "type": "integer" + }, + "descriptionHTML": "

Used for pagination: the number of results to return.

" + }, + { + "name": "filter", + "description": "filter results", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

filter results

" + }, + { + "name": "excludedAttributes", + "description": "attributes to exclude", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

attributes to exclude

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups", + "html": "
curl \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('GET /scim/v2/enterprises/{enterprise}/Groups', {\n enterprise: 'enterprise'\n})", + "html": "
await octokit.request('GET /scim/v2/enterprises/{enterprise}/Groups', {\n  enterprise: 'enterprise'\n})\n
" + } + ], + "summary": "List provisioned SCIM groups for an enterprise", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", + "operationId": "enterprise-admin/list-provisioned-groups-enterprise", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#list-provisioned-scim-groups-for-an-enterprise" + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [], + "category": "enterprise-admin", + "subcategory": "scim" + }, + "slug": "list-provisioned-scim-groups-for-an-enterprise", + "category": "enterprise-admin", + "categoryLabel": "Enterprise admin", + "subcategory": "scim", + "subcategoryLabel": "Scim", + "notes": [], + "bodyParameters": [], + "descriptionHTML": "

Note: The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"schemas\": [\n    \"urn:ietf:params:scim:api:messages:2.0:ListResponse\"\n  ],\n  \"totalResults\": 2,\n  \"itemsPerPage\": 2,\n  \"startIndex\": 1,\n  \"Resources\": [\n    {\n      \"schemas\": [\n        \"urn:ietf:params:scim:schemas:core:2.0:Group\"\n      ],\n      \"id\": \"abcd27f8-a9aa-11ea-8221-f59b2be9cccc\",\n      \"externalId\": null,\n      \"displayName\": \"octo-org\",\n      \"members\": [\n        {\n          \"value\": \"92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n          \"$ref\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n          \"display\": \"octocat@github.com\"\n        },\n        {\n          \"value\": \"aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5\",\n          \"$ref\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Users/aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5\",\n          \"display\": \"hubot@example.com\"\n        }\n      ],\n      \"meta\": {\n        \"resourceType\": \"Group\",\n        \"created\": \"2020-06-09T03:10:17.000+10:00\",\n        \"lastModified\": \"2020-06-09T03:10:17.000+10:00\",\n        \"location\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc\"\n      }\n    },\n    {\n      \"schemas\": [\n        \"urn:ietf:params:scim:schemas:core:2.0:Group\"\n      ],\n      \"id\": \"5e75bbbb-aa1a-11ea-8644-75ff655cdddd\",\n      \"externalId\": null,\n      \"displayName\": \"octo-docs-org\",\n      \"members\": [\n        {\n          \"value\": \"92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n          \"$ref\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n          \"display\": \"octocat@github.com\"\n        }\n      ],\n      \"meta\": {\n        \"resourceType\": \"Group\",\n        \"created\": \"2020-06-09T16:28:01.000+10:00\",\n        \"lastModified\": \"2020-06-09T16:28:01.000+10:00\",\n        \"location\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Groups/5e75bbbb-aa1a-11ea-8644-75ff655cdddd\"\n      }\n    }\n  ]\n}\n
" + } + ] + }, + { + "verb": "post", + "requestPath": "/scim/v2/enterprises/{enterprise}/Groups", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -X POST \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups \\\n -d '{\"schemas\":[\"schemas\"],\"displayName\":\"displayName\"}'", + "html": "
curl \\\n  -X POST \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups \\\n  -d '{\"schemas\":[\"schemas\"],\"displayName\":\"displayName\"}'
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('POST /scim/v2/enterprises/{enterprise}/Groups', {\n enterprise: 'enterprise',\n schemas: [\n 'schemas'\n ],\n displayName: 'displayName'\n})", + "html": "
await octokit.request('POST /scim/v2/enterprises/{enterprise}/Groups', {\n  enterprise: 'enterprise',\n  schemas: [\n    'schemas'\n  ],\n  displayName: 'displayName'\n})\n
" + } + ], + "summary": "Provision a SCIM enterprise group and invite users", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nProvision an enterprise group, and invite users to the group. This sends invitation emails to the email address of the invited users to join the GitHub organization that the SCIM group corresponds to.", + "operationId": "enterprise-admin/provision-and-invite-enterprise-group", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#provision-a-scim-enterprise-group-and-invite-users" + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array of strings", + "description": "

Required. The SCIM schema URIs.

", + "items": { + "type": "string" + }, + "name": "schemas", + "in": "body", + "rawType": "array", + "rawDescription": "The SCIM schema URIs.", + "childParamsGroups": [] + }, + "displayName": { + "type": "string", + "description": "

Required. The name of the SCIM group. This must match the GitHub organization that the group maps to.

", + "name": "displayName", + "in": "body", + "rawType": "string", + "rawDescription": "The name of the SCIM group. This must match the GitHub organization that the group maps to.", + "childParamsGroups": [] + }, + "members": { + "type": "array of objects", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "

Required. The SCIM user ID for a user.

", + "name": "value", + "in": "body", + "rawType": "string", + "rawDescription": "The SCIM user ID for a user.", + "childParamsGroups": [] + } + }, + "required": [ + "value" + ] + }, + "name": "members", + "in": "body", + "rawType": "array", + "description": "

undefined

", + "childParamsGroups": [ + { + "parentName": "members", + "parentType": "items", + "id": "members-items", + "params": [ + { + "type": "string", + "description": "

Required. The SCIM user ID for a user.

", + "name": "value", + "in": "body", + "rawType": "string", + "rawDescription": "The SCIM user ID for a user.", + "childParamsGroups": [] + } + ] + } + ] + } + }, + "required": [ + "schemas", + "displayName" + ] + }, + "example": { + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "displayName": "octo-org", + "members": [ + { + "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc" + }, + { + "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5" + } + ] + } + } + } + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [], + "category": "enterprise-admin", + "subcategory": "scim" + }, + "slug": "provision-a-scim-enterprise-group-and-invite-users", + "category": "enterprise-admin", + "categoryLabel": "Enterprise admin", + "subcategory": "scim", + "subcategoryLabel": "Scim", + "notes": [], + "descriptionHTML": "

Note: The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.

\n

Provision an enterprise group, and invite users to the group. This sends invitation emails to the email address of the invited users to join the GitHub organization that the SCIM group corresponds to.

", + "responses": [ + { + "httpStatusCode": "201", + "httpStatusMessage": "Created", + "description": "Default response", + "payload": "
{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:Group\"\n  ],\n  \"id\": \"abcd27f8-a9aa-11ea-8221-f59b2be9cccc\",\n  \"externalId\": null,\n  \"displayName\": \"octo-org\",\n  \"members\": [\n    {\n      \"value\": \"92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n      \"$ref\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n      \"display\": \"octocat@github.com\"\n    },\n    {\n      \"value\": \"aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5\",\n      \"$ref\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Users/aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5\",\n      \"display\": \"hubot@example.com\"\n    }\n  ],\n  \"meta\": {\n    \"resourceType\": \"Group\",\n    \"created\": \"2020-06-09T03:10:17.000+10:0\",\n    \"lastModified\": \"2020-06-09T03:10:17.000+10:00\",\n    \"location\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc\"\n  }\n}\n
" + } + ], + "bodyParameters": [ + { + "type": "array of strings", + "description": "

Required. The SCIM schema URIs.

", + "items": { + "type": "string" + }, + "name": "schemas", + "in": "body", + "rawType": "array", + "rawDescription": "The SCIM schema URIs.", + "childParamsGroups": [] + }, + { + "type": "string", + "description": "

Required. The name of the SCIM group. This must match the GitHub organization that the group maps to.

", + "name": "displayName", + "in": "body", + "rawType": "string", + "rawDescription": "The name of the SCIM group. This must match the GitHub organization that the group maps to.", + "childParamsGroups": [] + }, + { + "type": "array of objects", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "

Required. The SCIM user ID for a user.

", + "name": "value", + "in": "body", + "rawType": "string", + "rawDescription": "The SCIM user ID for a user.", + "childParamsGroups": [] + } + }, + "required": [ + "value" + ] + }, + "name": "members", + "in": "body", + "rawType": "array", + "description": "

undefined

", + "childParamsGroups": [ + { + "parentName": "members", + "parentType": "items", + "id": "members-items", + "params": [ + { + "type": "string", + "description": "

Required. The SCIM user ID for a user.

", + "name": "value", + "in": "body", + "rawType": "string", + "rawDescription": "The SCIM user ID for a user.", + "childParamsGroups": [] + } + ] + } + ] + } + ] + }, + { + "verb": "get", + "requestPath": "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

" + }, + { + "name": "scim_group_id", + "description": "Identifier generated by the GitHub SCIM endpoint.", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Identifier generated by the GitHub SCIM endpoint.

" + }, + { + "name": "excludedAttributes", + "description": "Attributes to exclude.", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Attributes to exclude.

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups/SCIM_GROUP_ID", + "html": "
curl \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups/SCIM_GROUP_ID
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('GET /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}', {\n enterprise: 'enterprise',\n scim_group_id: 'scim_group_id'\n})", + "html": "
await octokit.request('GET /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}', {\n  enterprise: 'enterprise',\n  scim_group_id: 'scim_group_id'\n})\n
" + } + ], + "summary": "Get SCIM provisioning information for an enterprise group", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", + "operationId": "enterprise-admin/get-provisioning-information-for-enterprise-group", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#get-scim-provisioning-information-for-an-enterprise-group" + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [], + "category": "enterprise-admin", + "subcategory": "scim" + }, + "slug": "get-scim-provisioning-information-for-an-enterprise-group", + "category": "enterprise-admin", + "categoryLabel": "Enterprise admin", + "subcategory": "scim", + "subcategoryLabel": "Scim", + "notes": [], + "bodyParameters": [], + "descriptionHTML": "

Note: The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:Group\"\n  ],\n  \"id\": \"abcd27f8-a9aa-11ea-8221-f59b2be9cccc\",\n  \"externalId\": null,\n  \"displayName\": \"octo-org\",\n  \"members\": [\n    {\n      \"value\": \"92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n      \"$ref\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n      \"display\": \"octocat@github.com\"\n    },\n    {\n      \"value\": \"aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5\",\n      \"$ref\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Users/aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5\",\n      \"display\": \"hubot@example.com\"\n    }\n  ],\n  \"meta\": {\n    \"resourceType\": \"Group\",\n    \"created\": \"2020-06-09T03:10:17.000+10:0\",\n    \"lastModified\": \"2020-06-09T03:10:17.000+10:00\",\n    \"location\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc\"\n  }\n}\n
" + } + ] + }, + { + "verb": "put", + "requestPath": "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

" + }, + { + "name": "scim_group_id", + "description": "Identifier generated by the GitHub SCIM endpoint.", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Identifier generated by the GitHub SCIM endpoint.

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -X PUT \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups/SCIM_GROUP_ID \\\n -d '{\"schemas\":[\"schemas\"],\"displayName\":\"displayName\"}'", + "html": "
curl \\\n  -X PUT \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups/SCIM_GROUP_ID \\\n  -d '{\"schemas\":[\"schemas\"],\"displayName\":\"displayName\"}'
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('PUT /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}', {\n enterprise: 'enterprise',\n scim_group_id: 'scim_group_id',\n schemas: [\n 'schemas'\n ],\n displayName: 'displayName'\n})", + "html": "
await octokit.request('PUT /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}', {\n  enterprise: 'enterprise',\n  scim_group_id: 'scim_group_id',\n  schemas: [\n    'schemas'\n  ],\n  displayName: 'displayName'\n})\n
" + } + ], + "summary": "Set SCIM information for a provisioned enterprise group", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nReplaces an existing provisioned group’s information. You must provide all the information required for the group as if you were provisioning it for the first time. Any existing group information that you don't provide will be removed, including group membership. If you want to only update a specific attribute, use the [Update an attribute for a SCIM enterprise group](#update-an-attribute-for-a-scim-enterprise-group) endpoint instead.", + "operationId": "enterprise-admin/set-information-for-provisioned-enterprise-group", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#set-scim-information-for-a-provisioned-enterprise-group" + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array of strings", + "description": "

Required. The SCIM schema URIs.

", + "items": { + "type": "string" + }, + "name": "schemas", + "in": "body", + "rawType": "array", + "rawDescription": "The SCIM schema URIs.", + "childParamsGroups": [] + }, + "displayName": { + "type": "string", + "description": "

Required. The name of the SCIM group. This must match the GitHub organization that the group maps to.

", + "name": "displayName", + "in": "body", + "rawType": "string", + "rawDescription": "The name of the SCIM group. This must match the GitHub organization that the group maps to.", + "childParamsGroups": [] + }, + "members": { + "type": "array of objects", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "

Required. The SCIM user ID for a user.

", + "name": "value", + "in": "body", + "rawType": "string", + "rawDescription": "The SCIM user ID for a user.", + "childParamsGroups": [] + } + }, + "required": [ + "value" + ] + }, + "name": "members", + "in": "body", + "rawType": "array", + "description": "

undefined

", + "childParamsGroups": [ + { + "parentName": "members", + "parentType": "items", + "id": "members-items", + "params": [ + { + "type": "string", + "description": "

Required. The SCIM user ID for a user.

", + "name": "value", + "in": "body", + "rawType": "string", + "rawDescription": "The SCIM user ID for a user.", + "childParamsGroups": [] + } + ] + } + ] + } + }, + "required": [ + "schemas", + "displayName" + ] + }, + "example": { + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "displayName": "octo-org", + "members": [ + { + "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc" + }, + { + "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5" + } + ] + } + } + } + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [], + "category": "enterprise-admin", + "subcategory": "scim" + }, + "slug": "set-scim-information-for-a-provisioned-enterprise-group", + "category": "enterprise-admin", + "categoryLabel": "Enterprise admin", + "subcategory": "scim", + "subcategoryLabel": "Scim", + "notes": [], + "descriptionHTML": "

Note: The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.

\n

Replaces an existing provisioned group’s information. You must provide all the information required for the group as if you were provisioning it for the first time. Any existing group information that you don't provide will be removed, including group membership. If you want to only update a specific attribute, use the Update an attribute for a SCIM enterprise group endpoint instead.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:Group\"\n  ],\n  \"id\": \"abcd27f8-a9aa-11ea-8221-f59b2be9cccc\",\n  \"externalId\": null,\n  \"displayName\": \"octo-org\",\n  \"members\": [\n    {\n      \"value\": \"92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n      \"$ref\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n      \"display\": \"octocat@github.com\"\n    },\n    {\n      \"value\": \"aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5\",\n      \"$ref\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Users/aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5\",\n      \"display\": \"hubot@example.com\"\n    }\n  ],\n  \"meta\": {\n    \"resourceType\": \"Group\",\n    \"created\": \"2020-06-09T03:10:17.000+10:0\",\n    \"lastModified\": \"2020-06-09T03:10:17.000+10:00\",\n    \"location\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc\"\n  }\n}\n
" + } + ], + "bodyParameters": [ + { + "type": "array of strings", + "description": "

Required. The SCIM schema URIs.

", + "items": { + "type": "string" + }, + "name": "schemas", + "in": "body", + "rawType": "array", + "rawDescription": "The SCIM schema URIs.", + "childParamsGroups": [] + }, + { + "type": "string", + "description": "

Required. The name of the SCIM group. This must match the GitHub organization that the group maps to.

", + "name": "displayName", + "in": "body", + "rawType": "string", + "rawDescription": "The name of the SCIM group. This must match the GitHub organization that the group maps to.", + "childParamsGroups": [] + }, + { + "type": "array of objects", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "

Required. The SCIM user ID for a user.

", + "name": "value", + "in": "body", + "rawType": "string", + "rawDescription": "The SCIM user ID for a user.", + "childParamsGroups": [] + } + }, + "required": [ + "value" + ] + }, + "name": "members", + "in": "body", + "rawType": "array", + "description": "

undefined

", + "childParamsGroups": [ + { + "parentName": "members", + "parentType": "items", + "id": "members-items", + "params": [ + { + "type": "string", + "description": "

Required. The SCIM user ID for a user.

", + "name": "value", + "in": "body", + "rawType": "string", + "rawDescription": "The SCIM user ID for a user.", + "childParamsGroups": [] + } + ] + } + ] + } + ] + }, + { + "verb": "patch", + "requestPath": "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

" + }, + { + "name": "scim_group_id", + "description": "Identifier generated by the GitHub SCIM endpoint.", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Identifier generated by the GitHub SCIM endpoint.

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -X PATCH \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups/SCIM_GROUP_ID \\\n -d '{\"schemas\":[\"schemas\"],\"Operations\":[{\"op\":\"op\",\"path\":\"path\",\"value\":\"value\"}]}'", + "html": "
curl \\\n  -X PATCH \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups/SCIM_GROUP_ID \\\n  -d '{\"schemas\":[\"schemas\"],\"Operations\":[{\"op\":\"op\",\"path\":\"path\",\"value\":\"value\"}]}'
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('PATCH /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}', {\n enterprise: 'enterprise',\n scim_group_id: 'scim_group_id',\n schemas: [\n 'schemas'\n ],\n Operations: [\n {\n op: 'op',\n path: 'path',\n value: 'value'\n }\n ]\n})", + "html": "
await octokit.request('PATCH /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}', {\n  enterprise: 'enterprise',\n  scim_group_id: 'scim_group_id',\n  schemas: [\n    'schemas'\n  ],\n  Operations: [\n    {\n      op: 'op',\n      path: 'path',\n      value: 'value'\n    }\n  ]\n})\n
" + } + ], + "summary": "Update an attribute for a SCIM enterprise group", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nAllows you to change a provisioned group’s individual attributes. To change a group’s values, you must provide a specific Operations JSON format that contains at least one of the add, remove, or replace operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2).", + "operationId": "enterprise-admin/update-attribute-for-enterprise-group", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#update-an-attribute-for-a-scim-enterprise-group" + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array of strings", + "description": "

Required. The SCIM schema URIs.

", + "items": { + "type": "string" + }, + "name": "schemas", + "in": "body", + "rawType": "array", + "rawDescription": "The SCIM schema URIs.", + "childParamsGroups": [] + }, + "Operations": { + "type": "array of objects", + "description": "

Required. Array of SCIM operations.

", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "op": { + "type": "string", + "enum": [ + "add", + "Add", + "remove", + "Remove", + "replace", + "Replace" + ], + "name": "op", + "in": "body", + "rawType": "string", + "description": "

Required. undefined

", + "childParamsGroups": [] + }, + "path": { + "type": "string", + "name": "path", + "in": "body", + "rawType": "string", + "description": "

undefined

", + "childParamsGroups": [] + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "array" + } + ], + "name": "value", + "in": "body", + "description": "

undefined

", + "childParamsGroups": [] + } + }, + "required": [ + "op" + ] + }, + "name": "Operations", + "in": "body", + "rawType": "array", + "rawDescription": "Array of [SCIM operations](https://tools.ietf.org/html/rfc7644#section-3.5.2).", + "childParamsGroups": [ + { + "parentName": "Operations", + "parentType": "items", + "id": "operations-items", + "params": [ + { + "type": "string", + "enum": [ + "add", + "Add", + "remove", + "Remove", + "replace", + "Replace" + ], + "name": "op", + "in": "body", + "rawType": "string", + "description": "

Required. undefined

", + "childParamsGroups": [] + }, + { + "type": "string", + "name": "path", + "in": "body", + "rawType": "string", + "description": "

undefined

", + "childParamsGroups": [] + }, + { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "array" + } + ], + "name": "value", + "in": "body", + "description": "

undefined

", + "childParamsGroups": [] + } + ] + } + ] + } + }, + "required": [ + "schemas", + "Operations" + ] + }, + "example": { + "schemas": [ + "urn:ietf:params:scim:api:messages:2.0:PatchOp" + ], + "Operations": [ + { + "op": "remove", + "path": "members", + "value": [ + { + "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5" + } + ] + } + ] + } + } + } + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [], + "category": "enterprise-admin", + "subcategory": "scim" + }, + "slug": "update-an-attribute-for-a-scim-enterprise-group", + "category": "enterprise-admin", + "categoryLabel": "Enterprise admin", + "subcategory": "scim", + "subcategoryLabel": "Scim", + "notes": [], + "descriptionHTML": "

Note: The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.

\n

Allows you to change a provisioned group’s individual attributes. To change a group’s values, you must provide a specific Operations JSON format that contains at least one of the add, remove, or replace operations. For examples and more information on the SCIM operations format, see the SCIM specification.

", + "responses": [ + { + "httpStatusCode": "200", + "httpStatusMessage": "OK", + "description": "Default response", + "payload": "
{\n  \"schemas\": [\n    \"urn:ietf:params:scim:schemas:core:2.0:Group\"\n  ],\n  \"id\": \"abcd27f8-a9aa-11ea-8221-f59b2be9cccc\",\n  \"externalId\": null,\n  \"displayName\": \"octo-org\",\n  \"members\": [\n    {\n      \"value\": \"92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n      \"$ref\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc\",\n      \"display\": \"octocat@github.com\"\n    }\n  ],\n  \"meta\": {\n    \"resourceType\": \"Group\",\n    \"created\": \"2020-06-09T03:10:17.000+10:00\",\n    \"lastModified\": \"2020-06-09T03:10:17.000+10:00\",\n    \"location\": \"https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc\"\n  }\n}\n
" + } + ], + "bodyParameters": [ + { + "type": "array of strings", + "description": "

Required. The SCIM schema URIs.

", + "items": { + "type": "string" + }, + "name": "schemas", + "in": "body", + "rawType": "array", + "rawDescription": "The SCIM schema URIs.", + "childParamsGroups": [] + }, + { + "type": "array of objects", + "description": "

Required. Array of SCIM operations.

", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "op": { + "type": "string", + "enum": [ + "add", + "Add", + "remove", + "Remove", + "replace", + "Replace" + ], + "name": "op", + "in": "body", + "rawType": "string", + "description": "

Required. undefined

", + "childParamsGroups": [] + }, + "path": { + "type": "string", + "name": "path", + "in": "body", + "rawType": "string", + "description": "

undefined

", + "childParamsGroups": [] + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "array" + } + ], + "name": "value", + "in": "body", + "description": "

undefined

", + "childParamsGroups": [] + } + }, + "required": [ + "op" + ] + }, + "name": "Operations", + "in": "body", + "rawType": "array", + "rawDescription": "Array of [SCIM operations](https://tools.ietf.org/html/rfc7644#section-3.5.2).", + "childParamsGroups": [ + { + "parentName": "Operations", + "parentType": "items", + "id": "operations-items", + "params": [ + { + "type": "string", + "enum": [ + "add", + "Add", + "remove", + "Remove", + "replace", + "Replace" + ], + "name": "op", + "in": "body", + "rawType": "string", + "description": "

Required. undefined

", + "childParamsGroups": [] + }, + { + "type": "string", + "name": "path", + "in": "body", + "rawType": "string", + "description": "

undefined

", + "childParamsGroups": [] + }, + { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "array" + } + ], + "name": "value", + "in": "body", + "description": "

undefined

", + "childParamsGroups": [] + } + ] + } + ] + } + ] + }, + { + "verb": "delete", + "requestPath": "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", + "serverUrl": "https://api.github.com", + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

" + }, + { + "name": "scim_group_id", + "description": "Identifier generated by the GitHub SCIM endpoint.", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "descriptionHTML": "

Identifier generated by the GitHub SCIM endpoint.

" + } + ], + "x-codeSamples": [ + { + "lang": "Shell", + "source": "curl \\\n -X DELETE \\\n -H \"Accept: application/vnd.github.v3+json\" \\\n https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups/SCIM_GROUP_ID", + "html": "
curl \\\n  -X DELETE \\\n  -H \"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/scim/v2/enterprises/ENTERPRISE/Groups/SCIM_GROUP_ID
" + }, + { + "lang": "JavaScript", + "source": "await octokit.request('DELETE /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}', {\n enterprise: 'enterprise',\n scim_group_id: 'scim_group_id'\n})", + "html": "
await octokit.request('DELETE /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}', {\n  enterprise: 'enterprise',\n  scim_group_id: 'scim_group_id'\n})\n
" + } + ], + "summary": "Delete a SCIM group from an enterprise", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", + "operationId": "enterprise-admin/delete-scim-group-from-enterprise", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#delete-a-scim-group-from-an-enterprise" + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [], + "category": "enterprise-admin", + "subcategory": "scim" + }, + "slug": "delete-a-scim-group-from-an-enterprise", + "category": "enterprise-admin", + "categoryLabel": "Enterprise admin", + "subcategory": "scim", + "subcategoryLabel": "Scim", + "notes": [], + "responses": [ + { + "httpStatusCode": "204", + "httpStatusMessage": "No Content", + "description": "Default Response" + } + ], + "bodyParameters": [], + "descriptionHTML": "

Note: The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.

" + }, { "verb": "get", "requestPath": "/search/code", @@ -71950,6 +73348,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -73016,7 +74415,7 @@ "parameters": [ { "name": "visibility", - "description": "Can be one of `all`, `public`, or `private`.", + "description": "Can be one of `all`, `public`, or `private`. Note: For GitHub AE, can be one of `all`, `internal`, or `private`.", "in": "query", "required": false, "schema": { @@ -73028,7 +74427,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, public, or private.

" + "descriptionHTML": "

Can be one of all, public, or private. Note: For GitHub AE, can be one of all, internal, or private.

" }, { "name": "affiliation", @@ -73043,7 +74442,7 @@ }, { "name": "type", - "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", + "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Note: For GitHub AE, can be one of `all`, `owner`, `internal`, `private`, `member`. Default: `all` \n \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.", "in": "query", "required": false, "schema": { @@ -73057,7 +74456,7 @@ ], "default": "all" }, - "descriptionHTML": "

Can be one of all, owner, public, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" + "descriptionHTML": "

Can be one of all, owner, public, private, member. Note: For GitHub AE, can be one of all, owner, internal, private, member. Default: all

\n

Will cause a 422 error if used in the same request as visibility or affiliation. Will cause a 422 error if used in the same request as visibility or affiliation.

" }, { "name": "sort", @@ -73213,7 +74612,7 @@ } ], "summary": "Create a repository for the authenticated user", - "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/github-ae@latest/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository", + "description": "Creates a new repository for the authenticated user.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](https://docs.github.com/github-ae@latest/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository. Note: For GitHub AE, use `repo` scope to create an internal repository.\n* `repo` scope to create a private repository.", "tags": [ "repos" ], @@ -73256,13 +74655,13 @@ "childParamsGroups": [] }, "private": { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, "has_issues": { @@ -73436,7 +74835,7 @@ "category": "repos", "categoryLabel": "Repos", "notes": [], - "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository
  • \n
  • repo scope to create a private repository
  • \n
", + "descriptionHTML": "

Creates a new repository for the authenticated user.

\n

OAuth scope requirements

\n

When using OAuth, authorizations must include:

\n
    \n
  • public_repo scope or repo scope to create a public repository. Note: For GitHub AE, use repo scope to create an internal repository.
  • \n
  • repo scope to create a private repository.
  • \n
", "bodyParameters": [ { "description": "

Required. The name of the repository.

", @@ -73467,13 +74866,13 @@ "childParamsGroups": [] }, { - "description": "

Whether the repository is private or public.

", + "description": "

Whether the repository is private.

", "default": false, "type": "boolean", "name": "private", "in": "body", "rawType": "boolean", - "rawDescription": "Whether the repository is private or public.", + "rawDescription": "Whether the repository is private.", "childParamsGroups": [] }, { @@ -75950,7 +77349,7 @@ } ], "summary": "List repositories for a user", - "description": "Lists public repositories for the specified user.", + "description": "Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.", "tags": [ "repos" ], @@ -75978,7 +77377,7 @@ "categoryLabel": "Repos", "notes": [], "bodyParameters": [], - "descriptionHTML": "

Lists public repositories for the specified user.

", + "descriptionHTML": "

Lists public repositories for the specified user. Note: For GitHub AE, this endpoint will list internal repositories for the specified user.

", "responses": [ { "httpStatusCode": "200", diff --git a/lib/rest/static/dereferenced/api.github.com.deref.json b/lib/rest/static/dereferenced/api.github.com.deref.json index 290e985a82..22e6099f63 100644 --- a/lib/rest/static/dereferenced/api.github.com.deref.json +++ b/lib/rest/static/dereferenced/api.github.com.deref.json @@ -4257,6 +4257,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -9931,6 +9940,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -21390,6 +21408,15 @@ ] } }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, { "name": "per_page", "description": "Results per page (max 100).", @@ -32289,6 +32316,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -34988,6 +35016,15 @@ "type": "integer", "default": 30 } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -48089,6 +48126,24 @@ "schema": { "type": "integer" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -52926,6 +52981,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -54793,6 +54866,15 @@ "type": "integer", "default": 30 } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -62526,6 +62608,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -66590,6 +66673,22 @@ "type": "integer", "default": 1 } + }, + { + "name": "exclude", + "description": "Exclude attributes from the API response to improve performance", + "in": "query", + "schema": { + "type": "array", + "items": { + "description": "Allowed values that can be passed to the exclude param.", + "enum": [ + "repositories" + ], + "example": "repositories", + "type": "string" + } + } } ], "responses": { @@ -69444,6 +69543,22 @@ "schema": { "type": "integer" } + }, + { + "name": "exclude", + "description": "Exclude attributes from the API response to improve performance", + "in": "query", + "schema": { + "type": "array", + "items": { + "description": "Allowed values that can be passed to the exclude param.", + "enum": [ + "repositories" + ], + "example": "repositories", + "type": "string" + } + } } ], "responses": { @@ -75183,6 +75298,15 @@ "schema": { "type": "string" } + }, + { + "name": "token", + "description": "package token", + "schema": { + "type": "string" + }, + "required": false, + "in": "query" } ], "responses": { @@ -75268,7 +75392,7 @@ "tags": [ "packages" ], - "operationId": "packages/get-all-package-versions-for-a-package-owned-by-an-org", + "operationId": "packages/get-all-package-versions-for-package-owned-by-org", "externalDocs": { "description": "API method documentation", "url": "https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-the-authenticated-user" @@ -75307,6 +75431,38 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "state", + "in": "query", + "required": false, + "description": "The state of the package, either active or deleted.", + "schema": { + "type": "string", + "enum": [ + "active", + "deleted" + ], + "default": "active" + } } ], "responses": { @@ -80346,7 +80502,7 @@ "/orgs/{org}/settings/billing/actions": { "get": { "summary": "Get GitHub Actions billing for an organization", - "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAccess tokens must have the `repo` or `admin:org` scope.", + "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAccess tokens must have the `repo` or `admin:org` scope.", "operationId": "billing/get-github-actions-billing-org", "tags": [ "billing" @@ -80617,11 +80773,10 @@ }, { "name": "page", - "description": "Page number of the results to fetch.", + "description": "Page token", "in": "query", "schema": { - "type": "integer", - "default": 1 + "type": "string" } } ], @@ -82899,6 +83054,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "pinned", + "in": "query", + "required": false, + "description": "Pinned discussions only filter", + "schema": { + "type": "string" + } } ], "responses": { @@ -150229,7 +150393,7 @@ "/repos/{owner}/{repo}/code-scanning/alerts": { "get": { "summary": "List code scanning alerts for a repository", - "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used `ref` in the request).", + "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).", "tags": [ "code-scanning" ], @@ -150301,7 +150465,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." } }, { @@ -150314,6 +150478,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -150369,6 +150534,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -150564,7 +150730,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -150579,6 +150745,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -150926,6 +151093,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -151136,7 +151304,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -151151,6 +151319,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -151502,6 +151671,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -151712,7 +151882,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -151727,6 +151897,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -152011,7 +152182,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." } } ], @@ -152027,7 +152198,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -152042,6 +152213,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -152296,7 +152468,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." } }, { @@ -152324,7 +152496,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "commit_sha": { "description": "The SHA of the commit to which the analysis you are uploading relates.", @@ -152585,7 +152757,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "commit_sha": { "description": "The SHA of the commit to which the analysis you are uploading relates.", @@ -152818,7 +152990,8 @@ "description": "Allow deletion if the specified analysis is the last in a set. The parameter can be used without a value as the parameter value is not considered. If you attempt to delete the final analysis in a set without using this parameter you'll get a 400 response with the message: `Analysis is last of its type and deletion may result in the loss of historical alert data. Please specify confirm_delete.`", "required": false, "schema": { - "type": "string" + "type": "string", + "nullable": true } } ], @@ -152993,7 +153166,7 @@ "/repos/{owner}/{repo}/code-scanning/sarifs": { "post": { "summary": "Upload an analysis as SARIF data", - "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", + "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nThere are two places where you can upload code scanning results.\n - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see \"[Triaging code scanning alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests).\"\n - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see \"[Managing code scanning alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository).\"\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", "operationId": "code-scanning/upload-sarif", "tags": [ "code-scanning" @@ -153035,7 +153208,7 @@ }, "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "sarif": { "description": "A Base64 string representing the SARIF file to upload. You must first compress your SARIF file using [`gzip`](http://www.gnu.org/software/gzip/manual/gzip.html) and then translate the contents of the file into a Base64 encoding string. For more information, see \"[SARIF support for code scanning](https://docs.github.com/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning).\"", @@ -158253,6 +158426,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -164118,9 +164311,27 @@ "type": "string" } }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -164865,7 +165076,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -164927,6 +165138,14 @@ "type": "integer", "default": 1 } + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } } ], "responses": { @@ -165914,7 +166133,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -168212,13 +168431,31 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -169980,7 +170217,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -172631,7 +172868,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -173346,7 +173583,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -174038,7 +174275,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -174761,7 +174998,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true } }, { @@ -183338,7 +183576,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" } @@ -183360,6 +183599,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -185080,6 +185339,26 @@ "schema": { "type": "string" } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "requestBody": { @@ -185087,6 +185366,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -187567,7 +187847,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -187729,7 +188009,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -188089,7 +188369,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -188304,7 +188584,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -189320,7 +189600,8 @@ "required": true, "schema": { "type": "string" - } + }, + "x-multi-segment": true }, { "name": "recursive", @@ -242315,16 +242596,15 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] } }, { @@ -262972,6 +263252,279 @@ } } }, + "/repos/{owner}/{repo}/readme/{dir}": { + "get": { + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/rest/reference/repos#get-a-repository-readme" + }, + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "title": "Content File", + "description": "Content File", + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "encoding": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "content": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "git_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "download_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "_links": { + "type": "object", + "properties": { + "git": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html": { + "type": "string", + "format": "uri", + "nullable": true + }, + "self": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "git", + "html", + "self" + ] + }, + "target": { + "type": "string", + "example": "\"actual/actual.md\"" + }, + "submodule_git_url": { + "type": "string", + "example": "\"git://example.com/defunkt/dotjs.git\"" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ] + }, + "examples": { + "default": { + "value": { + "type": "file", + "encoding": "base64", + "size": 5362, + "name": "README.md", + "path": "README.md", + "content": "encoded content ...", + "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", + "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md", + "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", + "_links": { + "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" + } + } + } + } + } + } + }, + "404": { + "description": "Resource Not Found", + "content": { + "application/json": { + "schema": { + "title": "Basic Error", + "description": "Basic Error", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + } + } + } + } + } + }, + "422": { + "description": "Validation Failed", + "content": { + "application/json": { + "schema": { + "title": "Validation Error", + "description": "Validation Error", + "type": "object", + "required": [ + "message", + "documentation_url" + ], + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "resource": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + }, + "code": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "value": { + "oneOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "integer", + "nullable": true + }, + { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + ] + } + } + } + } + } + } + } + } + } + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [ + + ], + "category": "repos", + "subcategory": "contents" + } + } + }, "/repos/{owner}/{repo}/releases": { "get": { "summary": "List releases", @@ -265459,7 +266012,7 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { @@ -271260,6 +271813,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -271574,6 +272145,7 @@ "schema": { "type": "string", "enum": [ + "", "day", "week" ], @@ -272078,6 +272650,7 @@ "schema": { "type": "string", "enum": [ + "", "day", "week" ], @@ -277009,6 +277582,24 @@ "schema": { "type": "integer" } + }, + { + "name": "filter", + "description": "filter results", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "excludedAttributes", + "description": "attributes to exclude", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -277396,6 +277987,15 @@ "schema": { "type": "string" } + }, + { + "name": "excludedAttributes", + "description": "Attributes to exclude.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -277998,6 +278598,15 @@ "schema": { "type": "integer" } + }, + { + "name": "filter", + "description": "filter results", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -310308,6 +310917,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -324163,6 +324773,15 @@ "schema": { "type": "string" } + }, + { + "name": "token", + "description": "package token", + "schema": { + "type": "string" + }, + "required": false, + "in": "query" } ], "responses": { @@ -324248,7 +324867,7 @@ "tags": [ "packages" ], - "operationId": "packages/get-all-package-versions-for-a-package-owned-by-the-authenticated-user", + "operationId": "packages/get-all-package-versions-for-package-owned-by-authenticated-user", "externalDocs": { "description": "API method documentation", "url": "https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-the-authenticated-user" @@ -324279,6 +324898,38 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "state", + "in": "query", + "required": false, + "description": "The state of the package, either active or deleted.", + "schema": { + "type": "string", + "enum": [ + "active", + "deleted" + ], + "default": "active" + } } ], "responses": { @@ -356916,7 +357567,7 @@ "/users/{username}/settings/billing/actions": { "get": { "summary": "Get GitHub Actions billing for a user", - "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage does not include the multiplier for macOS and Windows runners and is not rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAccess tokens must have the `user` scope.", + "description": "Gets the summary of the free and paid GitHub Actions minutes used.\n\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see \"[Managing billing for GitHub Actions](https://help.github.com/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)\".\n\nAccess tokens must have the `user` scope.", "operationId": "billing/get-github-actions-billing-user", "tags": [ "billing" diff --git a/lib/rest/static/dereferenced/ghes-2.18.deref.json b/lib/rest/static/dereferenced/ghes-2.18.deref.json index 11b1bbf946..b30da5d436 100644 --- a/lib/rest/static/dereferenced/ghes-2.18.deref.json +++ b/lib/rest/static/dereferenced/ghes-2.18.deref.json @@ -1140,6 +1140,43 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + } + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -1899,6 +1936,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -2744,6 +2809,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -8911,6 +9005,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -10508,6 +10611,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -28017,6 +28129,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -30679,6 +30792,15 @@ "type": "integer", "default": 30 } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -43615,6 +43737,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -48038,6 +48161,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -94486,6 +94638,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -100147,9 +100319,27 @@ "type": "string" } }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -100894,7 +101084,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -100956,6 +101146,14 @@ "type": "integer", "default": 1 } + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } } ], "responses": { @@ -101937,7 +102135,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -104189,13 +104387,31 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -105934,7 +106150,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -108169,7 +108385,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -108884,7 +109100,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -109576,7 +109792,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -110299,7 +110515,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true } }, { @@ -116955,7 +117172,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" } @@ -116977,6 +117195,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -118673,6 +118911,26 @@ "schema": { "type": "string" } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "requestBody": { @@ -118680,6 +118938,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -121476,7 +121735,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -121691,7 +121950,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -122707,7 +122966,8 @@ "required": true, "schema": { "type": "string" - } + }, + "x-multi-segment": true }, { "name": "recursive", @@ -164648,6 +164908,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -173085,16 +173373,15 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] } }, { @@ -192567,6 +192854,279 @@ } } }, + "/repos/{owner}/{repo}/readme/{dir}": { + "get": { + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@2.18/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@2.18/rest/reference/repos#get-a-repository-readme" + }, + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "title": "Content File", + "description": "Content File", + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "encoding": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "content": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "git_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "download_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "_links": { + "type": "object", + "properties": { + "git": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html": { + "type": "string", + "format": "uri", + "nullable": true + }, + "self": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "git", + "html", + "self" + ] + }, + "target": { + "type": "string", + "example": "\"actual/actual.md\"" + }, + "submodule_git_url": { + "type": "string", + "example": "\"git://example.com/defunkt/dotjs.git\"" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ] + }, + "examples": { + "default": { + "value": { + "type": "file", + "encoding": "base64", + "size": 5362, + "name": "README.md", + "path": "README.md", + "content": "encoded content ...", + "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", + "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md", + "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", + "_links": { + "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" + } + } + } + } + } + } + }, + "404": { + "description": "Resource Not Found", + "content": { + "application/json": { + "schema": { + "title": "Basic Error", + "description": "Basic Error", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + } + } + } + } + } + }, + "422": { + "description": "Validation Failed", + "content": { + "application/json": { + "schema": { + "title": "Validation Error", + "description": "Validation Error", + "type": "object", + "required": [ + "message", + "documentation_url" + ], + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "resource": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + }, + "code": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "value": { + "oneOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "integer", + "nullable": true + }, + { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + ] + } + } + } + } + } + } + } + } + } + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [ + + ], + "category": "repos", + "subcategory": "contents" + } + } + }, "/repos/{owner}/{repo}/releases": { "get": { "summary": "List releases", @@ -195054,7 +195614,7 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { @@ -199871,6 +200431,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -234335,6 +234913,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" diff --git a/lib/rest/static/dereferenced/ghes-2.19.deref.json b/lib/rest/static/dereferenced/ghes-2.19.deref.json index 5206af05c2..42599cedf7 100644 --- a/lib/rest/static/dereferenced/ghes-2.19.deref.json +++ b/lib/rest/static/dereferenced/ghes-2.19.deref.json @@ -1140,6 +1140,43 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + } + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -1899,6 +1936,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -2746,6 +2811,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -8925,6 +9019,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -10528,6 +10631,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -28047,6 +28159,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -30714,6 +30827,15 @@ "type": "integer", "default": 30 } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -44253,6 +44375,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -48681,6 +48804,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -97468,6 +97620,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -103129,9 +103301,27 @@ "type": "string" } }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -103876,7 +104066,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -103938,6 +104128,14 @@ "type": "integer", "default": 1 } + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } } ], "responses": { @@ -104929,7 +105127,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -107186,13 +107384,31 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -108931,7 +109147,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -111166,7 +111382,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -111881,7 +112097,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -112573,7 +112789,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -113296,7 +113512,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true } }, { @@ -119992,7 +120209,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" } @@ -120014,6 +120232,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -121710,6 +121948,26 @@ "schema": { "type": "string" } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "requestBody": { @@ -121717,6 +121975,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -124176,7 +124435,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -124338,7 +124597,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -124698,7 +124957,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -124913,7 +125172,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -125929,7 +126188,8 @@ "required": true, "schema": { "type": "string" - } + }, + "x-multi-segment": true }, { "name": "recursive", @@ -168072,6 +168332,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -176509,16 +176797,15 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] } }, { @@ -195991,6 +196278,279 @@ } } }, + "/repos/{owner}/{repo}/readme/{dir}": { + "get": { + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@2.19/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@2.19/rest/reference/repos#get-a-repository-readme" + }, + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "title": "Content File", + "description": "Content File", + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "encoding": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "content": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "git_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "download_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "_links": { + "type": "object", + "properties": { + "git": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html": { + "type": "string", + "format": "uri", + "nullable": true + }, + "self": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "git", + "html", + "self" + ] + }, + "target": { + "type": "string", + "example": "\"actual/actual.md\"" + }, + "submodule_git_url": { + "type": "string", + "example": "\"git://example.com/defunkt/dotjs.git\"" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ] + }, + "examples": { + "default": { + "value": { + "type": "file", + "encoding": "base64", + "size": 5362, + "name": "README.md", + "path": "README.md", + "content": "encoded content ...", + "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", + "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md", + "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", + "_links": { + "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" + } + } + } + } + } + } + }, + "404": { + "description": "Resource Not Found", + "content": { + "application/json": { + "schema": { + "title": "Basic Error", + "description": "Basic Error", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + } + } + } + } + } + }, + "422": { + "description": "Validation Failed", + "content": { + "application/json": { + "schema": { + "title": "Validation Error", + "description": "Validation Error", + "type": "object", + "required": [ + "message", + "documentation_url" + ], + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "resource": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + }, + "code": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "value": { + "oneOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "integer", + "nullable": true + }, + { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + ] + } + } + } + } + } + } + } + } + } + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [ + + ], + "category": "repos", + "subcategory": "contents" + } + } + }, "/repos/{owner}/{repo}/releases": { "get": { "summary": "List releases", @@ -198478,7 +199038,7 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { @@ -203295,6 +203855,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -237584,6 +238162,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" diff --git a/lib/rest/static/dereferenced/ghes-2.20.deref.json b/lib/rest/static/dereferenced/ghes-2.20.deref.json index 9c8e315069..a5df8416c8 100644 --- a/lib/rest/static/dereferenced/ghes-2.20.deref.json +++ b/lib/rest/static/dereferenced/ghes-2.20.deref.json @@ -1140,6 +1140,43 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + } + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -1895,6 +1932,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -2742,6 +2807,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -8930,6 +9024,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -13439,6 +13542,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -31006,6 +31118,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -33682,6 +33795,15 @@ "type": "integer", "default": 30 } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -47281,6 +47403,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -51718,6 +51841,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -99621,6 +99773,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -105300,9 +105472,27 @@ "type": "string" } }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -106047,7 +106237,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -106109,6 +106299,14 @@ "type": "integer", "default": 1 } + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } } ], "responses": { @@ -107100,7 +107298,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -109369,13 +109567,31 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -111125,7 +111341,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -113360,7 +113576,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -114075,7 +114291,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -114767,7 +114983,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -115490,7 +115706,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true } }, { @@ -122194,7 +122411,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" } @@ -122216,6 +122434,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -123924,6 +124162,26 @@ "schema": { "type": "string" } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "requestBody": { @@ -123931,6 +124189,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -126399,7 +126658,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -126561,7 +126820,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -126921,7 +127180,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -127136,7 +127395,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -128152,7 +128411,8 @@ "required": true, "schema": { "type": "string" - } + }, + "x-multi-segment": true }, { "name": "recursive", @@ -170392,6 +170652,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -178847,16 +179135,15 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] } }, { @@ -198980,6 +199267,279 @@ } } }, + "/repos/{owner}/{repo}/readme/{dir}": { + "get": { + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@2.20/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@2.20/rest/reference/repos#get-a-repository-readme" + }, + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "title": "Content File", + "description": "Content File", + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "encoding": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "content": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "git_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "download_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "_links": { + "type": "object", + "properties": { + "git": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html": { + "type": "string", + "format": "uri", + "nullable": true + }, + "self": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "git", + "html", + "self" + ] + }, + "target": { + "type": "string", + "example": "\"actual/actual.md\"" + }, + "submodule_git_url": { + "type": "string", + "example": "\"git://example.com/defunkt/dotjs.git\"" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ] + }, + "examples": { + "default": { + "value": { + "type": "file", + "encoding": "base64", + "size": 5362, + "name": "README.md", + "path": "README.md", + "content": "encoded content ...", + "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", + "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md", + "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", + "_links": { + "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" + } + } + } + } + } + } + }, + "404": { + "description": "Resource Not Found", + "content": { + "application/json": { + "schema": { + "title": "Basic Error", + "description": "Basic Error", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + } + } + } + } + } + }, + "422": { + "description": "Validation Failed", + "content": { + "application/json": { + "schema": { + "title": "Validation Error", + "description": "Validation Error", + "type": "object", + "required": [ + "message", + "documentation_url" + ], + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "resource": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + }, + "code": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "value": { + "oneOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "integer", + "nullable": true + }, + { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + ] + } + } + } + } + } + } + } + } + } + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [ + + ], + "category": "repos", + "subcategory": "contents" + } + } + }, "/repos/{owner}/{repo}/releases": { "get": { "summary": "List releases", @@ -201467,7 +202027,7 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { @@ -206284,6 +206844,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -240653,6 +241231,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" diff --git a/lib/rest/static/dereferenced/ghes-2.21.deref.json b/lib/rest/static/dereferenced/ghes-2.21.deref.json index 8aaab6d84b..a6998a1b0d 100644 --- a/lib/rest/static/dereferenced/ghes-2.21.deref.json +++ b/lib/rest/static/dereferenced/ghes-2.21.deref.json @@ -1140,6 +1140,43 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + } + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -1895,6 +1932,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -2742,6 +2807,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -8935,6 +9029,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -13444,6 +13547,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -31030,6 +31142,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -33716,6 +33829,15 @@ "type": "integer", "default": 30 } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -47357,6 +47479,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -51804,6 +51927,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -58520,6 +58672,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "pinned", + "in": "query", + "required": false, + "description": "Pinned discussions only filter", + "schema": { + "type": "string" + } } ], "responses": { @@ -110569,6 +110730,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -116268,9 +116449,27 @@ "type": "string" } }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -117015,7 +117214,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -117077,6 +117276,14 @@ "type": "integer", "default": 1 } + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } } ], "responses": { @@ -118068,7 +118275,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -120350,13 +120557,31 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -122118,7 +122343,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -124353,7 +124578,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -125068,7 +125293,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -125760,7 +125985,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -126483,7 +126708,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true } }, { @@ -133444,7 +133670,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" } @@ -133466,6 +133693,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -135187,6 +135434,26 @@ "schema": { "type": "string" } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "requestBody": { @@ -135194,6 +135461,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -137672,7 +137940,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -137834,7 +138102,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -138194,7 +138462,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -138409,7 +138677,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -139425,7 +139693,8 @@ "required": true, "schema": { "type": "string" - } + }, + "x-multi-segment": true }, { "name": "recursive", @@ -181907,6 +182176,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -190372,16 +190669,15 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] } }, { @@ -210589,6 +210885,279 @@ } } }, + "/repos/{owner}/{repo}/readme/{dir}": { + "get": { + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@2.21/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@2.21/rest/reference/repos#get-a-repository-readme" + }, + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "title": "Content File", + "description": "Content File", + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "encoding": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "content": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "git_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "download_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "_links": { + "type": "object", + "properties": { + "git": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html": { + "type": "string", + "format": "uri", + "nullable": true + }, + "self": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "git", + "html", + "self" + ] + }, + "target": { + "type": "string", + "example": "\"actual/actual.md\"" + }, + "submodule_git_url": { + "type": "string", + "example": "\"git://example.com/defunkt/dotjs.git\"" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ] + }, + "examples": { + "default": { + "value": { + "type": "file", + "encoding": "base64", + "size": 5362, + "name": "README.md", + "path": "README.md", + "content": "encoded content ...", + "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", + "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md", + "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", + "_links": { + "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" + } + } + } + } + } + } + }, + "404": { + "description": "Resource Not Found", + "content": { + "application/json": { + "schema": { + "title": "Basic Error", + "description": "Basic Error", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + } + } + } + } + } + }, + "422": { + "description": "Validation Failed", + "content": { + "application/json": { + "schema": { + "title": "Validation Error", + "description": "Validation Error", + "type": "object", + "required": [ + "message", + "documentation_url" + ], + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "resource": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + }, + "code": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "value": { + "oneOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "integer", + "nullable": true + }, + { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + ] + } + } + } + } + } + } + } + } + } + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [ + + ], + "category": "repos", + "subcategory": "contents" + } + } + }, "/repos/{owner}/{repo}/releases": { "get": { "summary": "List releases", @@ -213076,7 +213645,7 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { @@ -217893,6 +218462,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -249642,6 +250229,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" diff --git a/lib/rest/static/dereferenced/ghes-2.22.deref.json b/lib/rest/static/dereferenced/ghes-2.22.deref.json index a5ca44119e..ebf7fa61ea 100644 --- a/lib/rest/static/dereferenced/ghes-2.22.deref.json +++ b/lib/rest/static/dereferenced/ghes-2.22.deref.json @@ -1140,6 +1140,43 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + } + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -1899,6 +1936,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -2746,6 +2811,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -9028,6 +9122,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -13534,6 +13637,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -34838,6 +34950,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -37537,6 +37650,15 @@ "type": "integer", "default": 30 } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -46801,6 +46923,24 @@ "schema": { "type": "integer" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -51412,6 +51552,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -58187,6 +58345,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -62647,6 +62806,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -69501,6 +69689,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "pinned", + "in": "query", + "required": false, + "description": "Pinned discussions only filter", + "schema": { + "type": "string" + } } ], "responses": { @@ -132525,7 +132722,7 @@ "/repos/{owner}/{repo}/code-scanning/alerts": { "get": { "summary": "List code scanning alerts for a repository", - "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used `ref` in the request).", + "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).", "tags": [ "code-scanning" ], @@ -132597,7 +132794,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." } }, { @@ -132610,6 +132807,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -132665,6 +132863,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -132860,7 +133059,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -132875,6 +133074,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -133222,6 +133422,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -133432,7 +133633,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -133447,6 +133648,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -133798,6 +134000,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -134008,7 +134211,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -134023,6 +134226,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -134316,7 +134520,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." } }, { @@ -134344,7 +134548,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "commit_sha": { "description": "The SHA of the commit to which the analysis you are uploading relates.", @@ -134559,7 +134763,7 @@ "/repos/{owner}/{repo}/code-scanning/sarifs": { "post": { "summary": "Upload an analysis as SARIF data", - "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", + "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nThere are two places where you can upload code scanning results.\n - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see \"[Triaging code scanning alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests).\"\n - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see \"[Managing code scanning alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository).\"\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", "operationId": "code-scanning/upload-sarif", "tags": [ "code-scanning" @@ -134601,7 +134805,7 @@ }, "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "sarif": { "description": "A Base64 string representing the SARIF file to upload. You must first compress your SARIF file using [`gzip`](http://www.gnu.org/software/gzip/manual/gzip.html) and then translate the contents of the file into a Base64 encoding string. For more information, see \"[SARIF support for code scanning](https://docs.github.com/enterprise-server@2.22/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning).\"", @@ -139688,6 +139892,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -145408,9 +145632,27 @@ "type": "string" } }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -146155,7 +146397,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -146217,6 +146459,14 @@ "type": "integer", "default": 1 } + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } } ], "responses": { @@ -147208,7 +147458,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -149510,13 +149760,31 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -151278,7 +151546,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -153513,7 +153781,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -154228,7 +154496,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -154920,7 +155188,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -155643,7 +155911,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true } }, { @@ -162594,7 +162863,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" } @@ -162616,6 +162886,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -164336,6 +164626,26 @@ "schema": { "type": "string" } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "requestBody": { @@ -164343,6 +164653,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -166823,7 +167134,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -166985,7 +167296,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -167345,7 +167656,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -167560,7 +167871,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -168576,7 +168887,8 @@ "required": true, "schema": { "type": "string" - } + }, + "x-multi-segment": true }, { "name": "recursive", @@ -211024,6 +211336,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -219506,16 +219846,15 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] } }, { @@ -239728,6 +240067,279 @@ } } }, + "/repos/{owner}/{repo}/readme/{dir}": { + "get": { + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@2.22/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@2.22/rest/reference/repos#get-a-repository-readme" + }, + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "title": "Content File", + "description": "Content File", + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "encoding": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "content": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "git_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "download_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "_links": { + "type": "object", + "properties": { + "git": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html": { + "type": "string", + "format": "uri", + "nullable": true + }, + "self": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "git", + "html", + "self" + ] + }, + "target": { + "type": "string", + "example": "\"actual/actual.md\"" + }, + "submodule_git_url": { + "type": "string", + "example": "\"git://example.com/defunkt/dotjs.git\"" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ] + }, + "examples": { + "default": { + "value": { + "type": "file", + "encoding": "base64", + "size": 5362, + "name": "README.md", + "path": "README.md", + "content": "encoded content ...", + "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", + "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md", + "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", + "_links": { + "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" + } + } + } + } + } + } + }, + "404": { + "description": "Resource Not Found", + "content": { + "application/json": { + "schema": { + "title": "Basic Error", + "description": "Basic Error", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + } + } + } + } + } + }, + "422": { + "description": "Validation Failed", + "content": { + "application/json": { + "schema": { + "title": "Validation Error", + "description": "Validation Error", + "type": "object", + "required": [ + "message", + "documentation_url" + ], + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "resource": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + }, + "code": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "value": { + "oneOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "integer", + "nullable": true + }, + { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + ] + } + } + } + } + } + } + } + } + } + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [ + + ], + "category": "repos", + "subcategory": "contents" + } + } + }, "/repos/{owner}/{repo}/releases": { "get": { "summary": "List releases", @@ -242215,7 +242827,7 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { @@ -247032,6 +247644,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -278885,6 +279515,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" diff --git a/lib/rest/static/dereferenced/ghes-3.0.deref.json b/lib/rest/static/dereferenced/ghes-3.0.deref.json index 663a6c26ed..2fff74101d 100644 --- a/lib/rest/static/dereferenced/ghes-3.0.deref.json +++ b/lib/rest/static/dereferenced/ghes-3.0.deref.json @@ -1140,6 +1140,43 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + } + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -1899,6 +1936,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -2746,6 +2811,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to) or `name`.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -9242,6 +9336,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -14916,6 +15019,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "client_id", + "in": "query", + "required": false, + "description": "The client ID of your GitHub app.", + "schema": { + "type": "string" + } } ], "responses": { @@ -37262,6 +37374,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -39961,6 +40074,15 @@ "type": "integer", "default": 30 } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -50858,6 +50980,24 @@ "schema": { "type": "integer" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -55695,6 +55835,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -62720,6 +62878,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -67180,6 +67339,35 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "description": "The sort order for the response collection.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -74034,6 +74222,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "pinned", + "in": "query", + "required": false, + "description": "Pinned discussions only filter", + "schema": { + "type": "string" + } } ], "responses": { @@ -137615,7 +137812,7 @@ "/repos/{owner}/{repo}/code-scanning/alerts": { "get": { "summary": "List code scanning alerts for a repository", - "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used `ref` in the request).", + "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).", "tags": [ "code-scanning" ], @@ -137687,7 +137884,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." } }, { @@ -137700,6 +137897,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -137755,6 +137953,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -137950,7 +138149,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -137965,6 +138164,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -138312,6 +138512,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -138522,7 +138723,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -138537,6 +138738,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -138888,6 +139090,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -139098,7 +139301,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -139113,6 +139316,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -139406,7 +139610,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." } }, { @@ -139434,7 +139638,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "commit_sha": { "description": "The SHA of the commit to which the analysis you are uploading relates.", @@ -139649,7 +139853,7 @@ "/repos/{owner}/{repo}/code-scanning/sarifs": { "post": { "summary": "Upload an analysis as SARIF data", - "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", + "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nThere are two places where you can upload code scanning results.\n - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see \"[Triaging code scanning alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests).\"\n - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see \"[Managing code scanning alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository).\"\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", "operationId": "code-scanning/upload-sarif", "tags": [ "code-scanning" @@ -139691,7 +139895,7 @@ }, "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "sarif": { "description": "A Base64 string representing the SARIF file to upload. You must first compress your SARIF file using [`gzip`](http://www.gnu.org/software/gzip/manual/gzip.html) and then translate the contents of the file into a Base64 encoding string. For more information, see \"[SARIF support for code scanning](https://docs.github.com/enterprise-server@3.0/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning).\"", @@ -144778,6 +144982,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -150498,9 +150722,27 @@ "type": "string" } }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -151245,7 +151487,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -151307,6 +151549,14 @@ "type": "integer", "default": 1 } + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } } ], "responses": { @@ -152294,7 +152544,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -154592,13 +154842,31 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -156360,7 +156628,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -158595,7 +158863,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -159310,7 +159578,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -160002,7 +160270,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -160725,7 +160993,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true } }, { @@ -167676,7 +167945,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" } @@ -167698,6 +167968,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -169418,6 +169708,26 @@ "schema": { "type": "string" } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "requestBody": { @@ -169425,6 +169735,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -171905,7 +172216,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -172067,7 +172378,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -172427,7 +172738,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -172642,7 +172953,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -173658,7 +173969,8 @@ "required": true, "schema": { "type": "string" - } + }, + "x-multi-segment": true }, { "name": "recursive", @@ -216353,6 +216665,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -224835,16 +225175,15 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] } }, { @@ -245057,6 +245396,279 @@ } } }, + "/repos/{owner}/{repo}/readme/{dir}": { + "get": { + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/enterprise-server@3.0/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/enterprise-server@3.0/rest/reference/repos#get-a-repository-readme" + }, + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "title": "Content File", + "description": "Content File", + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "encoding": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "content": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "git_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "download_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "_links": { + "type": "object", + "properties": { + "git": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html": { + "type": "string", + "format": "uri", + "nullable": true + }, + "self": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "git", + "html", + "self" + ] + }, + "target": { + "type": "string", + "example": "\"actual/actual.md\"" + }, + "submodule_git_url": { + "type": "string", + "example": "\"git://example.com/defunkt/dotjs.git\"" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ] + }, + "examples": { + "default": { + "value": { + "type": "file", + "encoding": "base64", + "size": 5362, + "name": "README.md", + "path": "README.md", + "content": "encoded content ...", + "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", + "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md", + "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", + "_links": { + "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" + } + } + } + } + } + } + }, + "404": { + "description": "Resource Not Found", + "content": { + "application/json": { + "schema": { + "title": "Basic Error", + "description": "Basic Error", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + } + } + } + } + } + }, + "422": { + "description": "Validation Failed", + "content": { + "application/json": { + "schema": { + "title": "Validation Error", + "description": "Validation Error", + "type": "object", + "required": [ + "message", + "documentation_url" + ], + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "resource": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + }, + "code": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "value": { + "oneOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "integer", + "nullable": true + }, + { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + ] + } + } + } + } + } + } + } + } + } + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [ + + ], + "category": "repos", + "subcategory": "contents" + } + } + }, "/repos/{owner}/{repo}/releases": { "get": { "summary": "List releases", @@ -247544,7 +248156,7 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { @@ -252361,6 +252973,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -284238,6 +284868,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" diff --git a/lib/rest/static/dereferenced/github.ae.deref.json b/lib/rest/static/dereferenced/github.ae.deref.json index 4fb966764a..c8fe35b941 100644 --- a/lib/rest/static/dereferenced/github.ae.deref.json +++ b/lib/rest/static/dereferenced/github.ae.deref.json @@ -1140,6 +1140,43 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "accessed" + ], + "default": "created" + } + }, + { + "name": "since", + "description": "Only show public keys accessed after the given time.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -1519,6 +1556,34 @@ "type": "integer", "default": 1 } + }, + { + "name": "direction", + "description": "One of `asc` (ascending) or `desc` (descending).", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "desc" + } + }, + { + "name": "sort", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "created", + "updated", + "name" + ], + "default": "created" + } } ], "responses": { @@ -25369,6 +25434,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -28068,6 +28134,15 @@ "type": "integer", "default": 30 } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -39355,6 +39430,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -46380,6 +46473,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" @@ -57323,6 +57417,15 @@ "type": "integer", "default": 1 } + }, + { + "name": "pinned", + "in": "query", + "required": false, + "description": "Pinned discussions only filter", + "schema": { + "type": "string" + } } ], "responses": { @@ -120070,7 +120173,7 @@ "/repos/{owner}/{repo}/code-scanning/alerts": { "get": { "summary": "List code scanning alerts for a repository", - "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the the default branch or for the specified Git reference\n(if you used `ref` in the request).", + "description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint. GitHub Apps must have the `security_events` read permission to use\nthis endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).", "tags": [ "code-scanning" ], @@ -120142,7 +120245,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." } }, { @@ -120155,6 +120258,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -120210,6 +120314,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -120405,7 +120510,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -120420,6 +120525,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -120767,6 +120873,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -120977,7 +121084,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -120992,6 +121099,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -121343,6 +121451,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -121553,7 +121662,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -121568,6 +121677,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -121852,7 +121962,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." } } ], @@ -121868,7 +121978,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "analysis_key": { "type": "string", @@ -121883,6 +121993,7 @@ "description": "State of a code scanning alert.", "enum": [ "open", + "closed", "dismissed", "fixed" ] @@ -122137,7 +122248,7 @@ "required": false, "schema": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." } }, { @@ -122165,7 +122276,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "commit_sha": { "description": "The SHA of the commit to which the analysis you are uploading relates.", @@ -122426,7 +122537,7 @@ "properties": { "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "commit_sha": { "description": "The SHA of the commit to which the analysis you are uploading relates.", @@ -122620,7 +122731,7 @@ "/repos/{owner}/{repo}/code-scanning/sarifs": { "post": { "summary": "Upload an analysis as SARIF data", - "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", + "description": "Uploads SARIF data containing the results of a code scanning analysis to make the results available in a repository. You must use an access token with the `security_events` scope to use this endpoint. GitHub Apps must have the `security_events` write permission to use this endpoint.\n\nThere are two places where you can upload code scanning results.\n - If you upload to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see \"[Triaging code scanning alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests).\"\n - If you upload to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see \"[Managing code scanning alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository).\"\n\nYou must compress the SARIF-formatted analysis data that you want to upload, using `gzip`, and then encode it as a Base64 format string. For example:\n\n```\ngzip -c analysis-data.sarif | base64\n```\n\nSARIF upload supports a maximum of 1000 results per analysis run. Any results over this limit are ignored. Typically, but not necessarily, a SARIF file contains a single run of a single tool. If a code scanning tool generates too many results, you should update the analysis configuration to run only the most important rules or queries.\n\nThe `202 Accepted`, response includes an `id` value.\nYou can use this ID to check the status of the upload by using this for the `/sarifs/{sarif_id}` endpoint.\nFor more information, see \"[Get information about a SARIF upload](/rest/reference/code-scanning#get-information-about-a-sarif-upload).\"", "operationId": "code-scanning/upload-sarif", "tags": [ "code-scanning" @@ -122662,7 +122773,7 @@ }, "ref": { "type": "string", - "description": "The full Git reference, formatted as `refs/heads/`." + "description": "The full Git reference, formatted as `refs/heads/`,\n`refs/pull//merge`, or `refs/pull//head`." }, "sarif": { "description": "A Base64 string representing the SARIF file to upload. You must first compress your SARIF file using [`gzip`](http://www.gnu.org/software/gzip/manual/gzip.html) and then translate the contents of the file into a Base64 encoding string. For more information, see \"[SARIF support for code scanning](https://docs.github.com/github-ae@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning).\"", @@ -127880,6 +127991,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "top", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "last_sha", + "description": "legacy parameter for pagination.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -133745,9 +133876,27 @@ "type": "string" } }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -134492,7 +134641,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -134554,6 +134703,14 @@ "type": "integer", "default": 1 } + }, + { + "name": "app_id", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } } ], "responses": { @@ -135541,7 +135698,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -137839,13 +137996,31 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { "type": "string" }, "x-multi-segment": true + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } } ], "responses": { @@ -139607,7 +139782,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -141842,7 +142017,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -142557,7 +142732,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -143249,7 +143424,7 @@ }, { "name": "path", - "description": "path+ parameter", + "description": "path parameter", "in": "path", "required": true, "schema": { @@ -143972,7 +144147,8 @@ "required": false, "schema": { "type": "string", - "default": "none" + "default": "none", + "nullable": true } }, { @@ -152404,7 +152580,8 @@ "enum": [ "newest", "oldest", - "stargazers" + "stargazers", + "watchers" ], "default": "newest" } @@ -152426,6 +152603,26 @@ "type": "integer", "default": 1 } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -154146,6 +154343,26 @@ "schema": { "type": "string" } + }, + { + "name": "org", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "organization", + "description": "legacy query parameter for specifying the org.", + "in": "query", + "deprecated": true, + "required": false, + "schema": { + "type": "string" + } } ], "requestBody": { @@ -154153,6 +154370,7 @@ "application/json": { "schema": { "type": "object", + "nullable": true, "properties": { "organization": { "type": "string", @@ -156633,7 +156851,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -156795,7 +157013,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -157155,7 +157373,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -157370,7 +157588,7 @@ }, { "name": "ref", - "description": "ref+ parameter", + "description": "ref parameter", "in": "path", "required": true, "schema": { @@ -158386,7 +158604,8 @@ "required": true, "schema": { "type": "string" - } + }, + "x-multi-segment": true }, { "name": "recursive", @@ -209468,16 +209687,15 @@ }, { "name": "sort", - "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "created", - "updated" - ], - "default": "created" + "updated", + "created_at" + ] } }, { @@ -230125,6 +230343,279 @@ } } }, + "/repos/{owner}/{repo}/readme/{dir}": { + "get": { + "summary": "Get a repository README", + "description": "Gets the preferred README for a repository.\n\nREADMEs support [custom media types](https://docs.github.com/github-ae@latest/rest/reference/repos#custom-media-types) for retrieving the raw content or rendered HTML.", + "tags": [ + "repos" + ], + "operationId": "repos/get-readme-from-alt-path", + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/repos#get-a-repository-readme" + }, + "parameters": [ + { + "name": "owner", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dir", + "description": "The alternate path to look for a README file", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true + }, + { + "name": "ref", + "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "title": "Content File", + "description": "Content File", + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "encoding": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "content": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "git_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "download_url": { + "type": "string", + "format": "uri", + "nullable": true + }, + "_links": { + "type": "object", + "properties": { + "git": { + "type": "string", + "format": "uri", + "nullable": true + }, + "html": { + "type": "string", + "format": "uri", + "nullable": true + }, + "self": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "git", + "html", + "self" + ] + }, + "target": { + "type": "string", + "example": "\"actual/actual.md\"" + }, + "submodule_git_url": { + "type": "string", + "example": "\"git://example.com/defunkt/dotjs.git\"" + } + }, + "required": [ + "_links", + "git_url", + "html_url", + "download_url", + "name", + "path", + "sha", + "size", + "type", + "url", + "content", + "encoding" + ] + }, + "examples": { + "default": { + "value": { + "type": "file", + "encoding": "base64", + "size": 5362, + "name": "README.md", + "path": "README.md", + "content": "encoded content ...", + "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", + "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "html_url": "https://github.com/octokit/octokit.rb/blob/master/README.md", + "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", + "_links": { + "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", + "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", + "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" + } + } + } + } + } + } + }, + "404": { + "description": "Resource Not Found", + "content": { + "application/json": { + "schema": { + "title": "Basic Error", + "description": "Basic Error", + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + } + } + } + } + } + }, + "422": { + "description": "Validation Failed", + "content": { + "application/json": { + "schema": { + "title": "Validation Error", + "description": "Validation Error", + "type": "object", + "required": [ + "message", + "documentation_url" + ], + "properties": { + "message": { + "type": "string" + }, + "documentation_url": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "resource": { + "type": "string" + }, + "field": { + "type": "string" + }, + "message": { + "type": "string" + }, + "code": { + "type": "string" + }, + "index": { + "type": "integer" + }, + "value": { + "oneOf": [ + { + "type": "string", + "nullable": true + }, + { + "type": "integer", + "nullable": true + }, + { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + ] + } + } + } + } + } + } + } + } + } + }, + "x-github": { + "githubCloudOnly": false, + "enabledForGitHubApps": true, + "previews": [ + + ], + "category": "repos", + "subcategory": "contents" + } + } + }, "/repos/{owner}/{repo}/releases": { "get": { "summary": "List releases", @@ -232612,7 +233103,7 @@ }, { "name": "tag", - "description": "tag+ parameter", + "description": "tag parameter", "in": "path", "required": true, "schema": { @@ -237429,6 +237920,24 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "description": "Page number of the results to fetch.", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "per_page", + "description": "Results per page (max 100).", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } } ], "responses": { @@ -242371,6 +242880,1022 @@ } } }, + "/scim/v2/enterprises/{enterprise}/Groups": { + "get": { + "summary": "List provisioned SCIM groups for an enterprise", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", + "operationId": "enterprise-admin/list-provisioned-groups-enterprise", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#list-provisioned-scim-groups-for-an-enterprise" + }, + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "startIndex", + "description": "Used for pagination: the index of the first result to return.", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "count", + "description": "Used for pagination: the number of results to return.", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "filter", + "description": "filter results", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "excludedAttributes", + "description": "attributes to exclude", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array", + "items": { + "type": "string" + } + }, + "totalResults": { + "type": "number" + }, + "itemsPerPage": { + "type": "number" + }, + "startIndex": { + "type": "number" + }, + "Resources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schemas": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "externalId": { + "type": "string", + "nullable": true + }, + "displayName": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "$ref": { + "type": "string" + }, + "display": { + "type": "string" + } + } + } + }, + "meta": { + "type": "object", + "properties": { + "resourceType": { + "type": "string" + }, + "created": { + "type": "string" + }, + "lastModified": { + "type": "string" + }, + "location": { + "type": "string" + } + } + } + }, + "required": [ + "schemas", + "id" + ] + } + } + }, + "required": [ + "schemas", + "totalResults", + "itemsPerPage", + "startIndex", + "Resources" + ] + }, + "examples": { + "default": { + "value": { + "schemas": [ + "urn:ietf:params:scim:api:messages:2.0:ListResponse" + ], + "totalResults": 2, + "itemsPerPage": 2, + "startIndex": 1, + "Resources": [ + { + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "id": "abcd27f8-a9aa-11ea-8221-f59b2be9cccc", + "externalId": null, + "displayName": "octo-org", + "members": [ + { + "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "display": "octocat@github.com" + }, + { + "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", + "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", + "display": "hubot@example.com" + } + ], + "meta": { + "resourceType": "Group", + "created": "2020-06-09T03:10:17.000+10:00", + "lastModified": "2020-06-09T03:10:17.000+10:00", + "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc" + } + }, + { + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "id": "5e75bbbb-aa1a-11ea-8644-75ff655cdddd", + "externalId": null, + "displayName": "octo-docs-org", + "members": [ + { + "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "display": "octocat@github.com" + } + ], + "meta": { + "resourceType": "Group", + "created": "2020-06-09T16:28:01.000+10:00", + "lastModified": "2020-06-09T16:28:01.000+10:00", + "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Groups/5e75bbbb-aa1a-11ea-8644-75ff655cdddd" + } + } + ] + } + } + } + } + } + } + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [ + + ], + "category": "enterprise-admin", + "subcategory": "scim" + } + }, + "post": { + "summary": "Provision a SCIM enterprise group and invite users", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nProvision an enterprise group, and invite users to the group. This sends invitation emails to the email address of the invited users to join the GitHub organization that the SCIM group corresponds to.", + "operationId": "enterprise-admin/provision-and-invite-enterprise-group", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#provision-a-scim-enterprise-group-and-invite-users" + }, + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array", + "description": "The SCIM schema URIs.", + "items": { + "type": "string" + } + }, + "displayName": { + "type": "string", + "description": "The name of the SCIM group. This must match the GitHub organization that the group maps to." + }, + "members": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The SCIM user ID for a user." + } + }, + "required": [ + "value" + ] + } + } + }, + "required": [ + "schemas", + "displayName" + ] + }, + "example": { + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "displayName": "octo-org", + "members": [ + { + "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc" + }, + { + "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5" + } + ] + } + } + } + }, + "responses": { + "201": { + "description": "response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "externalId": { + "type": "string", + "nullable": true + }, + "displayName": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "$ref": { + "type": "string" + }, + "display": { + "type": "string" + } + } + } + }, + "meta": { + "type": "object", + "properties": { + "resourceType": { + "type": "string" + }, + "created": { + "type": "string" + }, + "lastModified": { + "type": "string" + }, + "location": { + "type": "string" + } + } + } + }, + "required": [ + "schemas", + "id" + ] + }, + "examples": { + "default": { + "value": { + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "id": "abcd27f8-a9aa-11ea-8221-f59b2be9cccc", + "externalId": null, + "displayName": "octo-org", + "members": [ + { + "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "display": "octocat@github.com" + }, + { + "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", + "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", + "display": "hubot@example.com" + } + ], + "meta": { + "resourceType": "Group", + "created": "2020-06-09T03:10:17.000+10:0", + "lastModified": "2020-06-09T03:10:17.000+10:00", + "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc" + } + } + } + } + } + } + } + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [ + + ], + "category": "enterprise-admin", + "subcategory": "scim" + } + } + }, + "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": { + "get": { + "summary": "Get SCIM provisioning information for an enterprise group", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", + "operationId": "enterprise-admin/get-provisioning-information-for-enterprise-group", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#get-scim-provisioning-information-for-an-enterprise-group" + }, + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scim_group_id", + "description": "Identifier generated by the GitHub SCIM endpoint.", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "excludedAttributes", + "description": "Attributes to exclude.", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "externalId": { + "type": "string", + "nullable": true + }, + "displayName": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "$ref": { + "type": "string" + }, + "display": { + "type": "string" + } + } + } + }, + "meta": { + "type": "object", + "properties": { + "resourceType": { + "type": "string" + }, + "created": { + "type": "string" + }, + "lastModified": { + "type": "string" + }, + "location": { + "type": "string" + } + } + } + }, + "required": [ + "schemas", + "id" + ] + }, + "examples": { + "default": { + "value": { + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "id": "abcd27f8-a9aa-11ea-8221-f59b2be9cccc", + "externalId": null, + "displayName": "octo-org", + "members": [ + { + "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "display": "octocat@github.com" + }, + { + "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", + "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", + "display": "hubot@example.com" + } + ], + "meta": { + "resourceType": "Group", + "created": "2020-06-09T03:10:17.000+10:0", + "lastModified": "2020-06-09T03:10:17.000+10:00", + "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc" + } + } + } + } + } + } + } + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [ + + ], + "category": "enterprise-admin", + "subcategory": "scim" + } + }, + "put": { + "summary": "Set SCIM information for a provisioned enterprise group", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nReplaces an existing provisioned group’s information. You must provide all the information required for the group as if you were provisioning it for the first time. Any existing group information that you don't provide will be removed, including group membership. If you want to only update a specific attribute, use the [Update an attribute for a SCIM enterprise group](#update-an-attribute-for-a-scim-enterprise-group) endpoint instead.", + "operationId": "enterprise-admin/set-information-for-provisioned-enterprise-group", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#set-scim-information-for-a-provisioned-enterprise-group" + }, + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scim_group_id", + "description": "Identifier generated by the GitHub SCIM endpoint.", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array", + "description": "The SCIM schema URIs.", + "items": { + "type": "string" + } + }, + "displayName": { + "type": "string", + "description": "The name of the SCIM group. This must match the GitHub organization that the group maps to." + }, + "members": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The SCIM user ID for a user." + } + }, + "required": [ + "value" + ] + } + } + }, + "required": [ + "schemas", + "displayName" + ] + }, + "example": { + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "displayName": "octo-org", + "members": [ + { + "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc" + }, + { + "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "externalId": { + "type": "string", + "nullable": true + }, + "displayName": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "$ref": { + "type": "string" + }, + "display": { + "type": "string" + } + } + } + }, + "meta": { + "type": "object", + "properties": { + "resourceType": { + "type": "string" + }, + "created": { + "type": "string" + }, + "lastModified": { + "type": "string" + }, + "location": { + "type": "string" + } + } + } + }, + "required": [ + "schemas", + "id" + ] + }, + "examples": { + "default": { + "value": { + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "id": "abcd27f8-a9aa-11ea-8221-f59b2be9cccc", + "externalId": null, + "displayName": "octo-org", + "members": [ + { + "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "display": "octocat@github.com" + }, + { + "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", + "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5", + "display": "hubot@example.com" + } + ], + "meta": { + "resourceType": "Group", + "created": "2020-06-09T03:10:17.000+10:0", + "lastModified": "2020-06-09T03:10:17.000+10:00", + "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc" + } + } + } + } + } + } + } + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [ + + ], + "category": "enterprise-admin", + "subcategory": "scim" + } + }, + "patch": { + "summary": "Update an attribute for a SCIM enterprise group", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.\n\nAllows you to change a provisioned group’s individual attributes. To change a group’s values, you must provide a specific Operations JSON format that contains at least one of the add, remove, or replace operations. For examples and more information on the SCIM operations format, see the [SCIM specification](https://tools.ietf.org/html/rfc7644#section-3.5.2).", + "operationId": "enterprise-admin/update-attribute-for-enterprise-group", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#update-an-attribute-for-a-scim-enterprise-group" + }, + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scim_group_id", + "description": "Identifier generated by the GitHub SCIM endpoint.", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array", + "description": "The SCIM schema URIs.", + "items": { + "type": "string" + } + }, + "Operations": { + "type": "array", + "description": "Array of [SCIM operations](https://tools.ietf.org/html/rfc7644#section-3.5.2).", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "op": { + "type": "string", + "enum": [ + "add", + "Add", + "remove", + "Remove", + "replace", + "Replace" + ] + }, + "path": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "array" + } + ] + } + }, + "required": [ + "op" + ] + } + } + }, + "required": [ + "schemas", + "Operations" + ] + }, + "example": { + "schemas": [ + "urn:ietf:params:scim:api:messages:2.0:PatchOp" + ], + "Operations": [ + { + "op": "remove", + "path": "members", + "value": [ + { + "value": "aaaa8c34-a6b2-11ea-9d70-bbbbbd1c8fd5" + } + ] + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schemas": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "externalId": { + "type": "string", + "nullable": true + }, + "displayName": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "$ref": { + "type": "string" + }, + "display": { + "type": "string" + } + } + } + }, + "meta": { + "type": "object", + "properties": { + "resourceType": { + "type": "string" + }, + "created": { + "type": "string" + }, + "lastModified": { + "type": "string" + }, + "location": { + "type": "string" + } + } + } + }, + "required": [ + "schemas", + "id" + ] + }, + "examples": { + "default": { + "value": { + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "id": "abcd27f8-a9aa-11ea-8221-f59b2be9cccc", + "externalId": null, + "displayName": "octo-org", + "members": [ + { + "value": "92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "$ref": "https://api.github.com/scim/v2/enterprises/octo-corp/Users/92b58aaa-a1d6-11ea-8227-b9ce9e023ccc", + "display": "octocat@github.com" + } + ], + "meta": { + "resourceType": "Group", + "created": "2020-06-09T03:10:17.000+10:00", + "lastModified": "2020-06-09T03:10:17.000+10:00", + "location": "https://api.github.com/scim/v2/enterprises/octo-corp/Groups/abcd27f8-a9aa-11ea-8221-f59b2be9cccc" + } + } + } + } + } + } + } + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [ + + ], + "category": "enterprise-admin", + "subcategory": "scim" + } + }, + "delete": { + "summary": "Delete a SCIM group from an enterprise", + "description": "**Note:** The SCIM API endpoints for enterprise accounts are currently in beta and are subject to change.", + "operationId": "enterprise-admin/delete-scim-group-from-enterprise", + "tags": [ + "enterprise-admin" + ], + "externalDocs": { + "description": "API method documentation", + "url": "https://docs.github.com/github-ae@latest/rest/reference/enterprise-admin#delete-a-scim-group-from-an-enterprise" + }, + "parameters": [ + { + "name": "enterprise", + "description": "The slug version of the enterprise name. You can also substitute this value with the enterprise id.", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "scim_group_id", + "description": "Identifier generated by the GitHub SCIM endpoint.", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Empty response" + } + }, + "x-github": { + "enabledForGitHubApps": true, + "githubCloudOnly": true, + "previews": [ + + ], + "category": "enterprise-admin", + "subcategory": "scim" + } + } + }, "/search/code": { "get": { "summary": "Search code", @@ -267853,6 +269378,7 @@ "created", "mentioned", "subscribed", + "repos", "all" ], "default": "assigned" From 024014740b49f602fc44a443506dec41d2d65858 Mon Sep 17 00:00:00 2001 From: Felicity Chapman Date: Tue, 16 Mar 2021 17:25:29 +0000 Subject: [PATCH 16/37] Group user docs on code security into a new "product" (#18196) --- .../about-securing-your-repository.md | 2 + .../code-security/getting-started/index.md | 13 + content/code-security/index.md | 19 + .../secret-security}/about-secret-scanning.md | 1 + ...g-secret-scanning-for-your-repositories.md | 1 + .../code-security/secret-security/index.md | 16 + .../managing-alerts-from-secret-scanning.md | 2 + .../secure-coding/about-code-scanning.md | 62 +++ .../about-integration-with-code-scanning.md | 29 ++ ...our-code-for-vulnerabilities-and-errors.md | 14 + .../configuring-code-scanning.md | 321 +++++++++++++ ...-codeql-code-scanning-in-your-ci-system.md | 190 ++++++++ ...-codeql-workflow-for-compiled-languages.md | 120 +++++ content/code-security/secure-coding/index.md | 32 ++ .../integrating-with-code-scanning.md | 14 + ...ode-scanning-alerts-for-your-repository.md | 135 ++++++ ...ing-codeql-code-scanning-in-a-container.md | 72 +++ ...-codeql-code-scanning-in-your-ci-system.md | 175 +++++++ .../sarif-support-for-code-scanning.md | 429 ++++++++++++++++++ ...tting-up-code-scanning-for-a-repository.md | 120 +++++ ...g-code-scanning-alerts-in-pull-requests.md | 69 +++ ...-codeql-code-scanning-in-your-ci-system.md | 58 +++ .../troubleshooting-the-codeql-workflow.md | 171 +++++++ .../uploading-a-sarif-file-to-github.md | 119 +++++ ...e-scanning-with-your-existing-ci-system.md | 14 + .../about-github-security-advisories.md | 1 + ...g-a-collaborator-to-a-security-advisory.md | 1 + ...ng-a-security-policy-to-your-repository.md | 1 + ...ork-to-resolve-a-security-vulnerability.md | 1 + .../creating-a-security-advisory.md | 1 + .../editing-a-security-advisory.md | 2 + .../security-advisories/index.md | 23 + ...rmission-levels-for-security-advisories.md | 1 + .../publishing-a-security-advisory.md | 2 + ...a-collaborator-from-a-security-advisory.md | 2 + .../withdrawing-a-security-advisory.md | 2 + ...bout-alerts-for-vulnerable-dependencies.md | 96 ++++ .../about-dependabot-security-updates.md | 4 +- .../about-dependabot-version-updates.md | 1 + .../about-managing-vulnerable-dependencies.md | 5 +- .../about-the-dependency-graph.md | 92 ++++ ...ilities-in-the-github-advisory-database.md | 7 +- ...guration-options-for-dependency-updates.md | 2 + ...configuring-dependabot-security-updates.md | 4 +- ...tifications-for-vulnerable-dependencies.md | 58 +++ .../customizing-dependency-updates.md | 2 + .../enabling-and-disabling-version-updates.md | 3 + ...loring-the-dependencies-of-a-repository.md | 116 +++++ .../supply-chain-security/index.md | 33 ++ ...your-actions-up-to-date-with-dependabot.md | 1 + ...your-dependencies-updated-automatically.md | 2 + ...ndencies-configured-for-version-updates.md | 2 + ...naging-encrypted-secrets-for-dependabot.md | 2 + ...ng-pull-requests-for-dependency-updates.md | 2 + ...abilities-in-your-projects-dependencies.md | 12 + .../troubleshooting-dependabot-errors.md | 1 + ...he-detection-of-vulnerable-dependencies.md | 6 +- ...nderstanding-your-software-supply-chain.md | 12 + ...nerable-dependencies-in-your-repository.md | 5 +- ...ating-a-github-app-using-url-parameters.md | 2 +- .../webhook-events-and-payloads.md | 2 +- .../administering-a-repository/index.md | 16 +- ...ng-dependency-changes-in-a-pull-request.md | 1 + .../about-code-scanning.md | 4 +- .../about-integration-with-code-scanning.md | 4 +- ...our-code-for-vulnerabilities-and-errors.md | 4 +- .../configuring-code-scanning.md | 4 +- ...-codeql-code-scanning-in-your-ci-system.md | 4 +- ...-codeql-workflow-for-compiled-languages.md | 4 +- .../index.md | 4 +- .../integrating-with-code-scanning.md | 4 +- ...ode-scanning-alerts-for-your-repository.md | 4 +- ...ing-codeql-code-scanning-in-a-container.md | 4 +- ...-codeql-code-scanning-in-your-ci-system.md | 4 +- .../sarif-support-for-code-scanning.md | 4 +- ...tting-up-code-scanning-for-a-repository.md | 4 +- ...g-code-scanning-alerts-in-pull-requests.md | 4 +- ...-codeql-code-scanning-in-your-ci-system.md | 4 +- .../troubleshooting-the-codeql-workflow.md | 4 +- .../uploading-a-sarif-file-to-github.md | 4 +- ...e-scanning-with-your-existing-ci-system.md | 4 +- content/github/index.md | 5 +- ...bout-alerts-for-vulnerable-dependencies.md | 3 +- ...tifications-for-vulnerable-dependencies.md | 3 +- .../index.md | 21 +- ...ecurity-vulnerabilities-in-your-project.md | 10 - ...abilities-in-your-projects-dependencies.md | 3 +- ...y-permission-levels-for-an-organization.md | 2 +- .../about-the-dependency-graph.md | 5 +- ...loring-the-dependencies-of-a-repository.md | 3 +- .../index.md | 5 +- ...iewing-the-dependencies-of-a-repository.md | 13 + data/products.yml | 1 + .../code-scanning/enabling-options.md | 2 +- ...pository_vulnerability_alert_short_desc.md | 2 +- .../article-with-broken-links-and-images.md | 2 +- 96 files changed, 2747 insertions(+), 129 deletions(-) rename content/{github/administering-a-repository => code-security/getting-started}/about-securing-your-repository.md (98%) create mode 100644 content/code-security/getting-started/index.md create mode 100644 content/code-security/index.md rename content/{github/administering-a-repository => code-security/secret-security}/about-secret-scanning.md (99%) rename content/{github/administering-a-repository => code-security/secret-security}/configuring-secret-scanning-for-your-repositories.md (98%) create mode 100644 content/code-security/secret-security/index.md rename content/{github/administering-a-repository => code-security/secret-security}/managing-alerts-from-secret-scanning.md (96%) create mode 100644 content/code-security/secure-coding/about-code-scanning.md create mode 100644 content/code-security/secure-coding/about-integration-with-code-scanning.md create mode 100644 content/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors.md create mode 100644 content/code-security/secure-coding/configuring-code-scanning.md create mode 100644 content/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system.md create mode 100644 content/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages.md create mode 100644 content/code-security/secure-coding/index.md create mode 100644 content/code-security/secure-coding/integrating-with-code-scanning.md create mode 100644 content/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository.md create mode 100644 content/code-security/secure-coding/running-codeql-code-scanning-in-a-container.md create mode 100644 content/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system.md create mode 100644 content/code-security/secure-coding/sarif-support-for-code-scanning.md create mode 100644 content/code-security/secure-coding/setting-up-code-scanning-for-a-repository.md create mode 100644 content/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests.md create mode 100644 content/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system.md create mode 100644 content/code-security/secure-coding/troubleshooting-the-codeql-workflow.md create mode 100644 content/code-security/secure-coding/uploading-a-sarif-file-to-github.md create mode 100644 content/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system.md rename content/{github/managing-security-vulnerabilities => code-security/security-advisories}/about-github-security-advisories.md (97%) rename content/{github/managing-security-vulnerabilities => code-security/security-advisories}/adding-a-collaborator-to-a-security-advisory.md (96%) rename content/{github/managing-security-vulnerabilities => code-security/security-advisories}/adding-a-security-policy-to-your-repository.md (96%) rename content/{github/managing-security-vulnerabilities => code-security/security-advisories}/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md (97%) rename content/{github/managing-security-vulnerabilities => code-security/security-advisories}/creating-a-security-advisory.md (97%) rename content/{github/managing-security-vulnerabilities => code-security/security-advisories}/editing-a-security-advisory.md (95%) create mode 100644 content/code-security/security-advisories/index.md rename content/{github/managing-security-vulnerabilities => code-security/security-advisories}/permission-levels-for-security-advisories.md (97%) rename content/{github/managing-security-vulnerabilities => code-security/security-advisories}/publishing-a-security-advisory.md (96%) rename content/{github/managing-security-vulnerabilities => code-security/security-advisories}/removing-a-collaborator-from-a-security-advisory.md (93%) rename content/{github/managing-security-vulnerabilities => code-security/security-advisories}/withdrawing-a-security-advisory.md (81%) create mode 100644 content/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies.md rename content/{github/managing-security-vulnerabilities => code-security/supply-chain-security}/about-dependabot-security-updates.md (91%) rename content/{github/administering-a-repository => code-security/supply-chain-security}/about-dependabot-version-updates.md (98%) rename content/{github/managing-security-vulnerabilities => code-security/supply-chain-security}/about-managing-vulnerable-dependencies.md (90%) create mode 100644 content/code-security/supply-chain-security/about-the-dependency-graph.md rename content/{github/managing-security-vulnerabilities => code-security/supply-chain-security}/browsing-security-vulnerabilities-in-the-github-advisory-database.md (93%) rename content/{github/administering-a-repository => code-security/supply-chain-security}/configuration-options-for-dependency-updates.md (99%) rename content/{github/managing-security-vulnerabilities => code-security/supply-chain-security}/configuring-dependabot-security-updates.md (95%) create mode 100644 content/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies.md rename content/{github/administering-a-repository => code-security/supply-chain-security}/customizing-dependency-updates.md (98%) rename content/{github/administering-a-repository => code-security/supply-chain-security}/enabling-and-disabling-version-updates.md (97%) create mode 100644 content/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository.md create mode 100644 content/code-security/supply-chain-security/index.md rename content/{github/administering-a-repository => code-security/supply-chain-security}/keeping-your-actions-up-to-date-with-dependabot.md (98%) rename content/{github/administering-a-repository => code-security/supply-chain-security}/keeping-your-dependencies-updated-automatically.md (69%) rename content/{github/administering-a-repository => code-security/supply-chain-security}/listing-dependencies-configured-for-version-updates.md (94%) rename content/{github/administering-a-repository => code-security/supply-chain-security}/managing-encrypted-secrets-for-dependabot.md (97%) rename content/{github/administering-a-repository => code-security/supply-chain-security}/managing-pull-requests-for-dependency-updates.md (97%) create mode 100644 content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies.md rename content/{github/managing-security-vulnerabilities => code-security/supply-chain-security}/troubleshooting-dependabot-errors.md (99%) rename content/{github/managing-security-vulnerabilities => code-security/supply-chain-security}/troubleshooting-the-detection-of-vulnerable-dependencies.md (97%) create mode 100644 content/code-security/supply-chain-security/understanding-your-software-supply-chain.md rename content/{github/managing-security-vulnerabilities => code-security/supply-chain-security}/viewing-and-updating-vulnerable-dependencies-in-your-repository.md (92%) delete mode 100644 content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md create mode 100644 content/github/visualizing-repository-data-with-graphs/viewing-the-dependencies-of-a-repository.md diff --git a/content/github/administering-a-repository/about-securing-your-repository.md b/content/code-security/getting-started/about-securing-your-repository.md similarity index 98% rename from content/github/administering-a-repository/about-securing-your-repository.md rename to content/code-security/getting-started/about-securing-your-repository.md index e383cbb71e..3c992dd73a 100644 --- a/content/github/administering-a-repository/about-securing-your-repository.md +++ b/content/code-security/getting-started/about-securing-your-repository.md @@ -1,6 +1,8 @@ --- title: About securing your repository intro: '{% data variables.product.product_name %} provides a number of ways that you can help keep your repository secure.' +redirect_from: + - /github/administering-a-repository/about-securing-your-repository versions: free-pro-team: '*' enterprise-server: '>=3.0' diff --git a/content/code-security/getting-started/index.md b/content/code-security/getting-started/index.md new file mode 100644 index 0000000000..22c5b34423 --- /dev/null +++ b/content/code-security/getting-started/index.md @@ -0,0 +1,13 @@ +--- +title: Getting started with code security +shortTitle: Getting started +intro: 'Introduction to code security with {% data variables.product.product_name %}.' +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +### Table of Contents + +{% link_in_list /about-securing-your-repository %} \ No newline at end of file diff --git a/content/code-security/index.md b/content/code-security/index.md new file mode 100644 index 0000000000..31576b13f8 --- /dev/null +++ b/content/code-security/index.md @@ -0,0 +1,19 @@ +--- +title: Code security +shortTitle: Code security +intro: 'Learn how to keep the code stored in your repositories secure.' +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% link_with_intro /getting-started %} + +{% link_with_intro /secret-security %} + +{% link_with_intro /secure-coding %} + +{% link_with_intro /security-advisories %} + +{% link_with_intro /supply-chain-security %} diff --git a/content/github/administering-a-repository/about-secret-scanning.md b/content/code-security/secret-security/about-secret-scanning.md similarity index 99% rename from content/github/administering-a-repository/about-secret-scanning.md rename to content/code-security/secret-security/about-secret-scanning.md index 8835b2c460..5384231795 100644 --- a/content/github/administering-a-repository/about-secret-scanning.md +++ b/content/code-security/secret-security/about-secret-scanning.md @@ -6,6 +6,7 @@ redirect_from: - /github/administering-a-repository/about-token-scanning - /articles/about-token-scanning - /articles/about-token-scanning-for-private-repositories + - /github/administering-a-repository/about-secret-scanning versions: free-pro-team: '*' enterprise-server: '>=3.0' diff --git a/content/github/administering-a-repository/configuring-secret-scanning-for-your-repositories.md b/content/code-security/secret-security/configuring-secret-scanning-for-your-repositories.md similarity index 98% rename from content/github/administering-a-repository/configuring-secret-scanning-for-your-repositories.md rename to content/code-security/secret-security/configuring-secret-scanning-for-your-repositories.md index 27105cdd2f..97e5dede29 100644 --- a/content/github/administering-a-repository/configuring-secret-scanning-for-your-repositories.md +++ b/content/code-security/secret-security/configuring-secret-scanning-for-your-repositories.md @@ -4,6 +4,7 @@ intro: 'You can configure how {% data variables.product.prodname_dotcom %} scans permissions: 'People with admin permissions to a repository can enable {% data variables.product.prodname_secret_scanning %} for the repository.' redirect_from: - /github/administering-a-repository/configuring-secret-scanning-for-private-repositories + - /github/administering-a-repository/configuring-secret-scanning-for-your-repositories product: '{% data reusables.gated-features.secret-scanning %}' versions: free-pro-team: '*' diff --git a/content/code-security/secret-security/index.md b/content/code-security/secret-security/index.md new file mode 100644 index 0000000000..7a47549ae1 --- /dev/null +++ b/content/code-security/secret-security/index.md @@ -0,0 +1,16 @@ +--- +title: Keeping secrets secure +shortTitle: Secret security +intro: 'Let GitHub do the hard work of ensuring that tokens, private keys, and other code secrets are not exposed in your repository.' +product: '{% data reusables.gated-features.secret-scanning %}' +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +### Table of Contents + +{% link_in_list /about-secret-scanning %} +{% link_in_list /configuring-secret-scanning-for-your-repositories %} +{% link_in_list /managing-alerts-from-secret-scanning %} diff --git a/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md b/content/code-security/secret-security/managing-alerts-from-secret-scanning.md similarity index 96% rename from content/github/administering-a-repository/managing-alerts-from-secret-scanning.md rename to content/code-security/secret-security/managing-alerts-from-secret-scanning.md index d6c7398e98..18f784c664 100644 --- a/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md +++ b/content/code-security/secret-security/managing-alerts-from-secret-scanning.md @@ -2,6 +2,8 @@ title: Managing alerts from secret scanning intro: You can view and close alerts for secrets checked in to your repository. product: '{% data reusables.gated-features.secret-scanning %}' +redirect_from: + - /github/administering-a-repository/managing-alerts-from-secret-scanning versions: free-pro-team: '*' enterprise-server: '>=3.0' diff --git a/content/code-security/secure-coding/about-code-scanning.md b/content/code-security/secure-coding/about-code-scanning.md new file mode 100644 index 0000000000..8913a2f881 --- /dev/null +++ b/content/code-security/secure-coding/about-code-scanning.md @@ -0,0 +1,62 @@ +--- +title: About code scanning +intro: 'You can use {% data variables.product.prodname_code_scanning %} to find security vulnerabilities and errors in the code for your project on {% data variables.product.prodname_dotcom %}.' +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta %} +{% data reusables.code-scanning.enterprise-enable-code-scanning %} + +### About {% data variables.product.prodname_code_scanning %} + +{% data reusables.code-scanning.about-code-scanning %} + +You can use {% data variables.product.prodname_code_scanning %} to find, triage, and prioritize fixes for existing problems in your code. {% data variables.product.prodname_code_scanning_capc %} also prevents developers from introducing new problems. You can schedule scans for specific days and times, or trigger scans when a specific event occurs in the repository, such as a push. + +If {% data variables.product.prodname_code_scanning %} finds a potential vulnerability or error in your code, {% data variables.product.prodname_dotcom %} displays an alert in the repository. After you fix the code that triggered the alert, {% data variables.product.prodname_dotcom %} closes the alert. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." + +To monitor results from {% data variables.product.prodname_code_scanning %} across your repositories or your organization, you can use webhooks and the {% data variables.product.prodname_code_scanning %} API. For information about the webhooks for {% data variables.product.prodname_code_scanning %}, see +"[Webhook events and payloads](/developers/webhooks-and-events/webhook-events-and-payloads#code_scanning_alert)." For information about API endpoints, see "[{% data variables.product.prodname_code_scanning_capc %}](/rest/reference/code-scanning)." + +To get started with {% data variables.product.prodname_code_scanning %}, see "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)." + +### About {% data variables.product.prodname_codeql %} + +You can use {% data variables.product.prodname_code_scanning %} with {% data variables.product.prodname_codeql %}, a semantic code analysis engine. {% data variables.product.prodname_codeql %} treats code as data, allowing you to find potential vulnerabilities in your code with greater confidence than traditional static analyzers. + +{% data variables.product.prodname_ql %} is the query language that powers {% data variables.product.prodname_codeql %}. {% data variables.product.prodname_ql %} is an object-oriented logic programming language. {% data variables.product.company_short %}, language experts, and security researchers create the queries used for {% data variables.product.prodname_code_scanning %}, and the queries are open source. The community maintains and updates the queries to improve analysis and reduce false positives. For more information, see [{% data variables.product.prodname_codeql %}](https://securitylab.github.com/tools/codeql) on the GitHub Security Lab website. + +{% data variables.product.prodname_code_scanning_capc %} with {% data variables.product.prodname_codeql %} supports both compiled and interpreted languages, and can find vulnerabilities and errors in code that's written in the supported languages. + +{% data reusables.code-scanning.supported-languages %} + +You can view and contribute to the queries for {% data variables.product.prodname_code_scanning %} in the [`github/codeql`](https://github.com/github/codeql) repository. For more information, see [{% data variables.product.prodname_codeql %} queries](https://codeql.github.com/docs/writing-codeql-queries/codeql-queries/) in the {% data variables.product.prodname_codeql %} documentation. + +{% if currentVersion == "free-pro-team@latest" %} + +### About billing for {% data variables.product.prodname_code_scanning %} + +{% data variables.product.prodname_code_scanning_capc %} uses {% data variables.product.prodname_actions %}, and each run of a {% data variables.product.prodname_code_scanning %} workflow consumes minutes for {% data variables.product.prodname_actions %}. For more information, see "[About billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions)." + +{% endif %} + +### About third-party code scanning tools + +{% data reusables.code-scanning.you-can-upload-third-party-analysis %} + +{% data reusables.code-scanning.interoperable-with-tools-that-output-sarif %} + +{% data reusables.code-scanning.get-started-uploading-third-party-data %} + +### Further reading + +{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} +- "[About securing your repository](/github/administering-a-repository/about-securing-your-repository)"{% endif %} +- [{% data variables.product.prodname_security %}](https://securitylab.github.com/) +- [OASIS Static Analysis Results Interchange Format (SARIF) TC](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sarif) on the OASIS Committee website diff --git a/content/code-security/secure-coding/about-integration-with-code-scanning.md b/content/code-security/secure-coding/about-integration-with-code-scanning.md new file mode 100644 index 0000000000..4542ac0eba --- /dev/null +++ b/content/code-security/secure-coding/about-integration-with-code-scanning.md @@ -0,0 +1,29 @@ +--- +title: About integration with code scanning +shortTitle: About integration +intro: 'You can perform {% data variables.product.prodname_code_scanning %} externally and then display the results in {% data variables.product.prodname_dotcom %}, or set up webhooks that listen to {% data variables.product.prodname_code_scanning %} activity in your repository.' +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta %} +{% data reusables.code-scanning.enterprise-enable-code-scanning %} + +As an alternative to running {% data variables.product.prodname_code_scanning %} within {% data variables.product.prodname_dotcom %}, you can perform analysis elsewhere and then upload the results. Alerts for {% data variables.product.prodname_code_scanning %} that you run externally are displayed in the same way as those for {% data variables.product.prodname_code_scanning %} that you run within {% data variables.product.prodname_dotcom %}. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." + +If you use a third-party static analysis tool that can produce results as Static Analysis Results Interchange Format (SARIF) 2.1.0 data, you can upload this to {% data variables.product.prodname_dotcom %}. For more information, see "[Uploading a SARIF file to GitHub](/code-security/secure-coding/uploading-a-sarif-file-to-github)." + +### Integrations with webhooks + +You can use {% data variables.product.prodname_code_scanning %} webhooks to build or set up integrations, such as [{% data variables.product.prodname_github_app %}s](/apps/building-github-apps/) or [{% data variables.product.prodname_oauth_app %}s](/apps/building-oauth-apps/), that subscribe to {% data variables.product.prodname_code_scanning %} events in your repository. For example, you could build an integration that creates an issue on {% data variables.product.product_name %} or sends you a Slack notification when a new {% data variables.product.prodname_code_scanning %} alert is added in your repository. For more information, see "[Creating webhooks](/developers/webhooks-and-events/creating-webhooks)" and "[Webhook events and payloads](/developers/webhooks-and-events/webhook-events-and-payloads#code_scanning_alert)." + +### Further reading + +* "[About {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/about-code-scanning)" +* "[Using {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} with your existing CI system](/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system)" +* "[SARIF support for {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/sarif-support-for-code-scanning)" diff --git a/content/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors.md b/content/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors.md new file mode 100644 index 0000000000..f5718e8713 --- /dev/null +++ b/content/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors.md @@ -0,0 +1,14 @@ +--- +title: Automatically scanning your code for vulnerabilities and errors +shortTitle: Scanning automatically +intro: 'You can find vulnerabilities and errors in your project''s code on {% data variables.product.prodname_dotcom %}, as well as view, triage, understand, and resolve the related {% data variables.product.prodname_code_scanning %} alerts.' +mapTopic: true +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + diff --git a/content/code-security/secure-coding/configuring-code-scanning.md b/content/code-security/secure-coding/configuring-code-scanning.md new file mode 100644 index 0000000000..8837732c5b --- /dev/null +++ b/content/code-security/secure-coding/configuring-code-scanning.md @@ -0,0 +1,321 @@ +--- +title: Configuring code scanning +intro: 'You can configure how {% data variables.product.prodname_dotcom %} scans the code in your project for vulnerabilities and errors.' +product: '{% data reusables.gated-features.code-scanning %}' +permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_code_scanning %} for the repository.' +miniTocMaxHeadingLevel: 4 +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta %} +{% data reusables.code-scanning.enterprise-enable-code-scanning-actions %} + +### About {% data variables.product.prodname_code_scanning %} configuration + +You can run {% data variables.product.prodname_code_scanning %} on {% data variables.product.product_name %}, using {% data variables.product.prodname_actions %}, or from your continuous integration (CI) system, using the {% data variables.product.prodname_codeql_runner %}. For more information about {% data variables.product.prodname_actions %}, see "[About {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/about-github-actions)." For more information about the {% data variables.product.prodname_codeql_runner %}, see "[Running {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)." + +This article is about running {% data variables.product.prodname_code_scanning %} on {% data variables.product.product_name %}. + +Before you can configure {% data variables.product.prodname_code_scanning %} for a repository, you must set up {% data variables.product.prodname_code_scanning %} by adding a {% data variables.product.prodname_actions %} workflow to the repository. For more information, see "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)." + +{% data reusables.code-scanning.edit-workflow %} + +{% data variables.product.prodname_codeql %} analysis is just one type of {% data variables.product.prodname_code_scanning %} you can do in {% data variables.product.prodname_dotcom %}. {% data variables.product.prodname_marketplace %}{% if currentVersion ver_gt "enterprise-server@2.21" %} on {% data variables.product.prodname_dotcom_the_website %}{% endif %} contains other {% data variables.product.prodname_code_scanning %} workflows you can use. {% if currentVersion == "free-pro-team@latest" %}You can find a selection of these on the "Get started with {% data variables.product.prodname_code_scanning %}" page, which you can access from the **{% octicon "shield" aria-label="The shield symbol" %} Security** tab.{% endif %} The specific examples given in this article relate to the {% data variables.product.prodname_codeql_workflow %} file. + +### Editing a {% data variables.product.prodname_code_scanning %} workflow + +{% data variables.product.prodname_dotcom %} saves workflow files in the _.github/workflows_ directory of your repository. You can find a workflow you have added by searching for its file name. For example, by default, the workflow file for {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} is called _codeql-analysis.yml_. + +1. In your repository, browse to the workflow file you want to edit. +1. In the upper right corner of the file view, to open the workflow editor, click {% octicon "pencil" aria-label="The edit icon" %}. +![Edit workflow file button](/assets/images/help/repository/code-scanning-edit-workflow-button.png) +1. After you have edited the file, click **Start commit** and complete the "Commit changes" form. You can choose to commit directly to the current branch, or create a new branch and start a pull request. +![Commit update to codeql.yml workflow](/assets/images/help/repository/code-scanning-workflow-update.png) + +For more information about editing workflow files, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." + +### Configuring frequency + +You can configure the {% data variables.product.prodname_codeql_workflow %} to scan code on a schedule or when specific events occur in a repository. + +Scanning code when someone pushes a change, and whenever a pull request is created, prevents developers from introducing new vulnerabilities and errors into the code. Scanning code on a schedule informs you about the latest vulnerabilities and errors that {% data variables.product.company_short %}, security researchers, and the community discover, even when developers aren't actively maintaining the repository. + +#### Scanning on push + +By default, the {% data variables.product.prodname_codeql_workflow %} uses the `on.push` event to trigger a code scan on every push to the default branch of the repository and any protected branches. For {% data variables.product.prodname_code_scanning %} to be triggered on a specified branch, the workflow must exist in that branch. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#on)." + +#### Scanning pull requests + +The default {% data variables.product.prodname_codeql_workflow %} uses the `pull_request` event to trigger a code scan on pull requests targeted against the default branch. {% if currentVersion ver_gt "enterprise-server@2.21" %}The `pull_request` event is not triggered if the pull request was opened from a private fork.{% else %}If a pull request is from a private fork, the `pull_request` event will only be triggered if you've selected the "Run workflows from fork pull requests" option in the repository settings. For more information, see "[Disabling or limiting {% data variables.product.prodname_actions %} for a repository](/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository#enabling-workflows-for-private-repository-forks)."{% endif %} + +For more information about the `pull_request` event, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestbranchestags)." + +#### Avoiding unnecessary scans of pull requests + +You might want to avoid a code scan being triggered on specific pull requests targeted against the default branch, irrespective of which files have been changed. You can configure this by specifying `on:pull_request:paths-ignore` or `on:pull_request:paths` in the {% data variables.product.prodname_code_scanning %} workflow. For example, if the only changes in a pull request are to files with the file extensions `.md` or `.txt` you can use the following `paths-ignore` array. + +``` yaml +on: + push: + branches: [main, protected] + pull_request: + branches: [main] + paths-ignore: + - '**/*.md' + - '**/*.txt' +``` + +{% note %} + +**Notes** + +* `on:pull_request:paths-ignore` and `on:pull_request:paths` set conditions that determine whether the actions in the workflow will run on a pull request. They don't determine what files will be analyzed when the actions _are_ run. When a pull request contains any files that are not matched by `on:pull_request:paths-ignore` or `on:pull_request:paths`, the workflow runs the actions and scans all of the files changed in the pull request, including those matched by `on:pull_request:paths-ignore` or `on:pull_request:paths`, unless the files have been excluded. For information on how to exclude files from analysis, see "[Specifying directories to scan](#specifying-directories-to-scan)." +* For {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} workflow files, don't use the `paths-ignore` or `paths` keywords with the `on:push` event as this is likely to cause missing analyses. For accurate results, {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} needs to be able to compare new changes with the analysis of the previous commit. + +{% endnote %} + +For more information about using `on:pull_request:paths-ignore` and `on:pull_request:paths` to determine when a workflow will run for a pull request, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths)." + +#### Scanning on a schedule + +If you use the default {% data variables.product.prodname_codeql_workflow %}, the workflow will scan the code in your repository once a week, in addition to the scans triggered by events. To adjust this schedule, edit the `cron` value in the workflow. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onschedule)." + +{% note %} + +**Note**: {% data variables.product.prodname_dotcom %} only runs scheduled jobs that are in workflows on the default branch. Changing the schedule in a workflow on any other branch has no effect until you merge the branch into the default branch. + +{% endnote %} + +#### Example + +The following example shows a {% data variables.product.prodname_codeql_workflow %} for a particular repository that has a default branch called `main` and one protected branch called `protected`. + +``` yaml +on: + push: + branches: [main, protected] + pull_request: + branches: [main] + schedule: + - cron: '0 15 * * 0' +``` + +This workflow scans: +* Every push to the default branch and the protected branch +* Every pull request to the default branch +* The default branch at 3 P.M. every Sunday + +### Specifying an operating system + +If your code requires a specific operating system to compile, you can configure the operating system in your {% data variables.product.prodname_codeql_workflow %}. Edit the value of `jobs.analyze.runs-on` to specify the operating system for the machine that runs your {% data variables.product.prodname_code_scanning %} actions. {% if currentVersion ver_gt "enterprise-server@2.21" %}You specify the operating system by using an appropriate label as the second element in a two-element array, after `self-hosted`.{% else %} + +If you choose to use a self-hosted runner for code scanning, you can specify an operating system by using an appropriate label as the second element in a two-element array, after `self-hosted`.{% endif %} + +``` yaml +jobs: + analyze: + name: Analyze + runs-on: [self-hosted, ubuntu-latest] +``` + +{% if currentVersion == "free-pro-team@latest" %}For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners)" and "[Adding self-hosted runners](/actions/hosting-your-own-runners/adding-self-hosted-runners)."{% endif %} + +{% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} supports the latest versions of Ubuntu, Windows, and macOS. Typical values for this setting are therefore: `ubuntu-latest`, `windows-latest`, and `macos-latest`. For more information, see {% if currentVersion ver_gt "enterprise-server@2.21" %}"[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#self-hosted-runners)" and "[Using labels with self-hosted runners](/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners){% else %}"[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on){% endif %}." + +{% if currentVersion ver_gt "enterprise-server@2.21" %}You must ensure that Git is in the PATH variable on your self-hosted runners.{% else %}If you use a self-hosted runner, you must ensure that Git is in the PATH variable.{% endif %} + +### Changing the languages that are analyzed + +{% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} automatically detects code written in the supported languages. + +{% data reusables.code-scanning.supported-languages %} + +The default {% data variables.product.prodname_codeql_workflow %} file contains a build matrix called `language` which lists the languages in your repository that are analyzed. {% data variables.product.prodname_codeql %} automatically populates this matrix when you add {% data variables.product.prodname_code_scanning %} to a repository. Using the `language` matrix optimizes {% data variables.product.prodname_codeql %} to run each analysis in parallel. We recommend that all workflows adopt this configuration due to the performance benefits of parallelizing builds. For more information about build matrices, see "[Managing complex workflows](/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix)." + +{% data reusables.code-scanning.specify-language-to-analyze %} + +If your workflow uses the `language` matrix then {% data variables.product.prodname_codeql %} is hardcoded to analyze only the languages in the matrix. To change the languages you want to analyze, edit the value of the matrix variable. You can remove a language to prevent it being analyzed or you can add a language that was not present in the repository when {% data variables.product.prodname_code_scanning %} was set up. For example, if the repository initially only contained JavaScript when {% data variables.product.prodname_code_scanning %} was set up, and you later added Python code, you will need to add `python` to the matrix. + +```yaml +jobs: + analyze: + name: Analyze + ... + strategy: + fail-fast: false + matrix: + language: ['javascript', 'python'] +``` + +If your workflow does not contain a matrix called `language`, then {% data variables.product.prodname_codeql %} is configured to run analysis sequentially. If you don't specify languages in the workflow, {% data variables.product.prodname_codeql %} automatically detects, and attempts to analyze, any supported languages in the repository. If you want to choose which languages to analyze, without using a matrix, you can use the `languages` parameter under the `init` action. + +```yaml +- uses: github/codeql-action/init@v1 + with: + languages: cpp, csharp, python +``` +{% if currentVersion == "free-pro-team@latest" %} +### Analyzing Python dependencies + +For GitHub-hosted runners that use Linux only, the {% data variables.product.prodname_codeql_workflow %} will try to auto-install Python dependencies to give more results for the CodeQL analysis. You can control this behavior by specifying the `setup-python-dependencies` parameter for the action called by the "Initialize CodeQL" step. By default, this parameter is set to `true`: + +- If the repository contains code written in Python, the "Initialize CodeQL" step installs the necessary dependencies on the GitHub-hosted runner. If the auto-install succeeds, the action also sets the environment variable `CODEQL_PYTHON` to the Python executable file that includes the dependencies. + +- If the repository doesn't have any Python dependencies, or the dependencies are specified in an unexpected way, you'll get a warning and the action will continue with the remaining jobs. The action can run successfully even when there are problems interpreting dependencies, but the results may be incomplete. + +Alternatively, you can install Python dependencies manually on any operating system. You will need to add `setup-python-dependencies` and set it to `false`, as well as set `CODEQL_PYTHON` to the Python executable that includes the dependencies, as shown in this workflow extract: + +```yaml +jobs: + CodeQL-Build: + + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + if [ -f requirements.txt ]; + then pip install -r requirements.txt; + fi + # Set the `CODEQL-PYTHON` environment variable to the Python executable + # that includes the dependencies + echo "CODEQL_PYTHON=$(which python)" >> $GITHUB_ENV + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: python + # Override the default behavior so that the action doesn't attempt + # to auto-install Python dependencies + setup-python-dependencies: false +``` +{% endif %} + +### Running additional queries + +{% data reusables.code-scanning.run-additional-queries %} + +To add one or more queries, add a `with: queries:` entry within the `uses: github/codeql-action/init@v1` section of the workflow. If the queries are in a private repository, use the `external-repository-token` parameter to specify a token that has access to the private repository. + +{% raw %} +``` yaml +- uses: github/codeql-action/init@v1 + with: + queries: COMMA-SEPARATED LIST OF PATHS + # Optional. Provide a token to access private repositories. + external-repository-token: ${{ secrets.ACCESS_TOKEN }} +``` +{% endraw %} + +You can also specify query suites in the value of `queries`. Query suites are collections of queries, usually grouped by purpose or language. + +{% data reusables.code-scanning.codeql-query-suites %} + +If you are also using a configuration file for custom settings, any additional queries specified in your workflow are used instead of any specified in the configuration file. If you want to run the combined set of additional queries specified here and in the configuration file, prefix the value of `queries` in the workflow with the `+` symbol. For more information, see "[Using a custom configuration file](#using-a-custom-configuration-file)." + +In the following example, the `+` symbol ensures that the specified additional queries are used together with any queries specified in the referenced configuration file. + +{% raw %} +``` yaml +- uses: github/codeql-action/init@v1 + with: + config-file: ./.github/codeql/codeql-config.yml + queries: +security-and-quality,octo-org/python-qlpack/show_ifs.ql@main + external-repository-token: ${{ secrets.ACCESS_TOKEN }} +``` +{% endraw %} + +### Using a custom configuration file + +As an alternative to specifying which queries to run in the workflow file, you can do this in a separate configuration file. You can also use a configuration file to disable the default queries and to specify which directories to scan during analysis. + +In the workflow file, use the `config-file` parameter of the `init` action to specify the path to the configuration file you want to use. This example loads the configuration file _./.github/codeql/codeql-config.yml_. + +``` yaml +- uses: github/codeql-action/init@v1 + with: + config-file: ./.github/codeql/codeql-config.yml +``` + +{% data reusables.code-scanning.custom-configuration-file %} + +If the configuration file is located in an external private repository, use the `external-repository-token` parameter of the `init` action to specify a token that has access to the private repository. + +{% raw %} +```yaml +uses: github/codeql-action/init@v1 +with: + external-repository-token: ${{ secrets.ACCESS_TOKEN }} +``` +{% endraw %} + +The settings in the configuration file are written in YAML format. + +#### Specifying additional queries + +You specify additional queries in a `queries` array. Each element of the array contains a `uses` parameter with a value that identifies a single query file, a directory containing query files, or a query suite definition file. + +``` yaml +queries: + - uses: ./my-basic-queries/example-query.ql + - uses: ./my-advanced-queries + - uses: ./codeql-qlpacks/complex-python-qlpack/rootAndBar.qls +``` + +Optionally, you can give each array element a name, as shown in the example configuration files below. + +For more information about additional queries, see "[Running additional queries](#running-additional-queries)" above. + +#### Disabling the default queries + +If you only want to run custom queries, you can disable the default security queries by using `disable-default-queries: true`. + +#### Specifying directories to scan + +For the interpreted languages that {% data variables.product.prodname_codeql %} supports (Python and JavaScript/TypeScript), you can restrict {% data variables.product.prodname_code_scanning %} to files in specific directories by adding a `paths` array to the configuration file. You can exclude the files in specific directories from analysis by adding a `paths-ignore` array. + +``` yaml +paths: + - src +paths-ignore: + - src/node_modules + - '**/*.test.js' +``` + +{% note %} + +**Note**: + +* The `paths` and `paths-ignore` keywords, used in the context of the {% data variables.product.prodname_code_scanning %} configuration file, should not be confused with the same keywords when used for `on..paths` in a workflow. When they are used to modify `on.` in a workflow, they determine whether the actions will be run when someone modifies code in the specified directories. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths)." +* `**` characters can only be at the start or end of a line, or surrounded by slashes, and you can't mix `**` and other characters. For example, `foo/**`, `**/foo`, and `foo/**/bar` are all allowed syntax, but `**foo` isn't. However you can use single stars along with other characters, as shown in the example. You'll need to quote anything that contains a `*` character. + +{% endnote %} + +For compiled languages, if you want to limit {% data variables.product.prodname_code_scanning %} to specific directories in your project, you must specify appropriate build steps in the workflow. The commands you need to use to exclude a directory from the build will depend on your build system. For more information, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." + +You can quickly analyze small portions of a monorepo when you modify code in specific directories. You'll need to both exclude directories in your build steps and use the `paths-ignore` and `paths` keywords for [`on.`](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths) in your workflow. + +#### Example configuration files + +{% data reusables.code-scanning.example-configuration-files %} + +### Configuring {% data variables.product.prodname_code_scanning %} for compiled languages + +{% data reusables.code-scanning.autobuild-compiled-languages %} {% data reusables.code-scanning.analyze-go %} + +{% data reusables.code-scanning.autobuild-add-build-steps %} For more information about how to configure {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} for compiled languages, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages)." + +### Uploading {% data variables.product.prodname_code_scanning %} data to {% data variables.product.prodname_dotcom %} + +{% data variables.product.prodname_dotcom %} can display code analysis data generated externally by a third-party tool. You can upload code analysis data with the `upload-sarif` action. For more information, see "[Uploading a SARIF file to GitHub](/code-security/secure-coding/uploading-a-sarif-file-to-github)." diff --git a/content/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system.md b/content/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system.md new file mode 100644 index 0000000000..5b8928288c --- /dev/null +++ b/content/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system.md @@ -0,0 +1,190 @@ +--- +title: Configuring CodeQL code scanning in your CI system +shortTitle: Configuring in your CI +intro: 'You can configure how the {% data variables.product.prodname_codeql_runner %} scans the code in your project and uploads the results to {% data variables.product.prodname_dotcom %}.' +product: '{% data reusables.gated-features.code-scanning %}' +miniTocMaxHeadingLevel: 4 +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta-codeql-runner %} +{% data reusables.code-scanning.beta %} +{% data reusables.code-scanning.enterprise-enable-code-scanning %} + +### About configuring {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system + +To integrate {% data variables.product.prodname_code_scanning %} into your CI system, you can use the {% data variables.product.prodname_codeql_runner %}. For more information, see "[Running {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)." + +In general, you invoke the {% data variables.product.prodname_codeql_runner %} as follows. + +```shell +$ /path/to-runner/codeql-runner-OS +``` + +`/path/to-runner/` depends on where you've downloaded the {% data variables.product.prodname_codeql_runner %} on your CI system. `codeql-runner-OS` depends on the operating system you use. +There are three versions of the {% data variables.product.prodname_codeql_runner %}, `codeql-runner-linux`, `codeql-runner-macos`, and `codeql-runner-win`, for Linux, macOS, and Windows systems respectively. + +To customize the way the {% data variables.product.prodname_codeql_runner %} scans your code, you can use flags, such as `--languages` and `--queries`, or you can specify custom settings in a separate configuration file. + +### Scanning pull requests + +Scanning code whenever a pull request is created prevents developers from introducing new vulnerabilities and errors into the code. + +To scan a pull request, run the `analyze` command and use the `--ref` flag to specify the pull request. The reference is `refs/pull//head` or `refs/pull//merge`, depending on whether you have checked out the HEAD commit of the pull request branch or a merge commit with the base branch. + +```shell +$ /path/to-runner/codeql-runner-linux analyze --ref refs/pull/42/head +``` + +### Overriding automatic language detection + +The {% data variables.product.prodname_codeql_runner %} automatically detects and scans code written in the supported languages. + +{% data reusables.code-scanning.supported-languages %} + +{% data reusables.code-scanning.specify-language-to-analyze %} + +To override automatic language detection, run the `init` command with the `--languages` flag, followed by a comma-separated list of language keywords. The keywords for the supported languages are `cpp`, `csharp`, `go`, `java`, `javascript`, and `python`. + +```shell +$ /path/to-runner/codeql-runner-linux init --languages cpp,java +``` + +### Running additional queries + +{% data reusables.code-scanning.run-additional-queries %} + +{% data reusables.code-scanning.codeql-query-suites %} + +To add one or more queries, pass a comma-separated list of paths to the `--queries` flag of the `init` command. You can also specify additional queries in a configuration file. + +If you also are using a configuration file for custom settings, and you are also specifying additional queries with the `--queries` flag, the {% data variables.product.prodname_codeql_runner %} uses the additional queries specified with the `--queries` flag instead of any in the configuration file. +If you want to run the combined set of additional queries specified with the flag and in the configuration file, prefix the value passed to `--queries` with the `+` symbol. +For more information, see "[Using a custom configuration file](#using-a-custom-configuration-file)." + +In the following example, the `+` symbol ensures that the {% data variables.product.prodname_codeql_runner %} uses the additional queries together with any queries specified in the referenced configuration file. + +```shell +$ /path/to-runner/codeql-runner-linux init --config-file .github/codeql/codeql-config.yml + --queries +security-and-quality,octo-org/python-qlpack/show_ifs.ql@main +``` + +### Using a custom configuration file + +Instead of passing additional information to the {% data variables.product.prodname_codeql_runner %} commands, you can specify custom settings in a separate configuration file. + +The configuration file is a YAML file. It uses syntax similar to the workflow syntax for {% data variables.product.prodname_actions %}, as illustrated in the examples below. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions)." + +Use the `--config-file` flag of the `init` command to specify the configuration file. The value of `--config-file` is the path to the configuration file that you want to use. This example loads the configuration file _.github/codeql/codeql-config.yml_. + +```shell +$ /path/to-runner/codeql-runner-linux init --config-file .github/codeql/codeql-config.yml +``` + +{% data reusables.code-scanning.custom-configuration-file %} + +#### Example configuration files + +{% data reusables.code-scanning.example-configuration-files %} + +### Configuring {% data variables.product.prodname_code_scanning %} for compiled languages + +For the compiled languages C/C++, C#, and Java, {% data variables.product.prodname_codeql %} builds the code before analyzing it. {% data reusables.code-scanning.analyze-go %} + +For many common build systems, the {% data variables.product.prodname_codeql_runner %} can build the code automatically. To attempt to build the code automatically, run `autobuild` between the `init` and `analyze` steps. Note that if your repository requires a specific version of a build tool, you may need to install the build tool manually first. + +The `autobuild` process only ever attempts to build _one_ compiled language for a repository. The language automatically selected for analysis is the language with the most files. If you want to choose a language explicitly, use the `--language` flag of the `autobuild` command. + +```shell +$ /path/to-runner/codeql-runner-linux autobuild --language csharp +``` + +If the `autobuild` command can't build your code, you can run the build steps yourself, between the `init` and `analyze` steps. For more information, see "[Running {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system#compiled-language-example)." + +### Uploading {% data variables.product.prodname_code_scanning %} data to {% data variables.product.prodname_dotcom %} + +By default, the {% data variables.product.prodname_codeql_runner %} uploads results from {% data variables.product.prodname_code_scanning %} when you run the `analyze` command. You can also upload SARIF files separately, by using the `upload` command. + +Once you've uploaded the data, {% data variables.product.prodname_dotcom %} displays the alerts in your repository. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." + +### {% data variables.product.prodname_codeql_runner %} command reference + +The {% data variables.product.prodname_codeql_runner %} supports the following commands and flags. + +#### `init` + +Initializes the {% data variables.product.prodname_codeql_runner %} and creates a {% data variables.product.prodname_codeql %} database for each language to be analyzed. + +| Flag | Required | Input value | +| ---- |:--------:| ----------- | +| `--repository` | ✓ | Name of the repository to initialize. | +| `--github-url` | ✓ | URL of the {% data variables.product.prodname_dotcom %} instance where your repository is hosted. | +| `--github-auth` | ✓ | A {% data variables.product.prodname_github_apps %} token or personal access token. | +| `--languages` | | Comma-separated list of languages to analyze. By default, the {% data variables.product.prodname_codeql_runner %} detects and analyzes all supported languages in the repository. | +| `--queries` | | Comma-separated list of additional queries to run, in addition to the default suite of security queries. | +| `--config-file` | | Path to custom configuration file. | +| `--codeql-path` | | Path to a copy of the {% data variables.product.prodname_codeql %} CLI executable to use. By default, the {% data variables.product.prodname_codeql_runner %} downloads a copy. | +| `--temp-dir` | | Directory where temporary files are stored. The default is `./codeql-runner`. | +| `--tools-dir` | | Directory where {% data variables.product.prodname_codeql %} tools and other files are stored between runs. The default is a subdirectory of the home directory. | +| `--checkout-path` | | The path to the checkout of your repository. The default is the current working directory. | +| `--debug` | | None. Prints more verbose output. | +| `-h`, `--help` | | None. Displays help for the command. | + +#### `autobuild` + +Attempts to build the code for the compiled languages C/C++, C#, and Java. For those languages, {% data variables.product.prodname_codeql %} builds the code before analyzing it. Run `autobuild` between the `init` and `analyze` steps. + +| Flag | Required | Input value | +| ---- |:--------:| ----------- | +| `--language` | | The language to build. By default, the {% data variables.product.prodname_codeql_runner %} builds the compiled language with the most files. | +| `--temp-dir` | | Directory where temporary files are stored. The default is `./codeql-runner`. | +| `--debug` | | None. Prints more verbose output. | +| `-h`, `--help` | | None. Displays help for the command. | + +#### `analyze` + +Analyzes the code in the {% data variables.product.prodname_codeql %} databases and uploads results to {% data variables.product.product_name %}. + +| Flag | Required | Input value | +| ---- |:--------:| ----------- | +| `--repository` | ✓ | Name of the repository to analyze. | +| `--commit` | ✓ | SHA of the commit to analyze. In Git and in Azure DevOps, this corresponds to the value of `git rev-parse HEAD`. In Jenkins, this corresponds to `$GIT_COMMIT`. | +| `--ref` | ✓ | Name of the reference to analyze, for example `refs/heads/main` or `refs/pull/42/merge`. In Git or in Jenkins, this corresponds to the value of `git symbolic-ref HEAD`. In Azure DevOps, this corresponds to `$(Build.SourceBranch)`. | +| `--github-url` | ✓ | URL of the {% data variables.product.prodname_dotcom %} instance where your repository is hosted. | +| `--github-auth` | ✓ | A {% data variables.product.prodname_github_apps %} token or personal access token. | +| `--checkout-path` | | The path to the checkout of your repository. The default is the current working directory. | +| `--no-upload` | | None. Stops the {% data variables.product.prodname_codeql_runner %} from uploading the results to {% data variables.product.product_name %}. | +| `--output-dir` | | Directory where the output SARIF files are stored. The default is in the directory of temporary files. | +| `--ram` | | Amount of memory to use when running queries. The default is to use all available memory. | +| `--no-add-snippets` | | None. Excludes code snippets from the SARIF output. | +| `--threads` | | Number of threads to use when running queries. The default is to use all available cores. | +| `--temp-dir` | | Directory where temporary files are stored. The default is `./codeql-runner`. | +| `--debug` | | None. Prints more verbose output. | +| `-h`, `--help` | | None. Displays help for the command. | + +#### `upload` + +Uploads SARIF files to {% data variables.product.product_name %}. + +{% note %} + +**Note**: If you analyze code with the CodeQL runner, the `analyze` command uploads SARIF results by default. You can use the `upload` command to upload SARIF results that were generated by other tools. + +{% endnote %} + +| Flag | Required | Input value | +| ---- |:--------:| ----------- | +| `--sarif-file` | ✓ | SARIF file to upload, or a directory containing multiple SARIF files. | +| `--repository` | ✓ | Name of the repository that was analyzed. | +| `--commit` | ✓ | SHA of the commit that was analyzed. In Git and in Azure DevOps, this corresponds to the value of `git rev-parse HEAD`. In Jenkins, this corresponds to `$GIT_COMMIT`. | +| `--ref` | ✓ | Name of the reference that was analyzed, for example `refs/heads/main` or `refs/pull/42/merge`. In Git or in Jenkins, this corresponds to the value of `git symbolic-ref HEAD`. In Azure DevOps, this corresponds to `$(Build.SourceBranch)`. | +| `--github-url` | ✓ | URL of the {% data variables.product.prodname_dotcom %} instance where your repository is hosted. | +| `--github-auth` | ✓ | A {% data variables.product.prodname_github_apps %} token or personal access token. | +| `--checkout-path` | | The path to the checkout of your repository. The default is the current working directory. | +| `--debug` | | None. Prints more verbose output. | +| `-h`, `--help` | | None. Displays help for the command. | diff --git a/content/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages.md b/content/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages.md new file mode 100644 index 0000000000..b3e6994dbf --- /dev/null +++ b/content/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages.md @@ -0,0 +1,120 @@ +--- +title: Configuring the CodeQL workflow for compiled languages +shortTitle: Configuring for compiled languages +intro: 'You can configure how {% data variables.product.prodname_dotcom %} uses the {% data variables.product.prodname_codeql_workflow %} to scan code written in compiled languages for vulnerabilities and errors.' +product: '{% data reusables.gated-features.code-scanning %}' +permissions: 'If you have write permissions to a repository, you can configure {% data variables.product.prodname_code_scanning %} for that repository.' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta %} +{% data reusables.code-scanning.enterprise-enable-code-scanning-actions %} + +### About the {% data variables.product.prodname_codeql_workflow %} and compiled languages + +You set up {% data variables.product.prodname_dotcom %} to run {% data variables.product.prodname_code_scanning %} for your repository by adding a {% data variables.product.prodname_actions %} workflow to the repository. For {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}, you add the {% data variables.product.prodname_codeql_workflow %}. For more information, see "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)." + +{% data reusables.code-scanning.edit-workflow %} +For general information about configuring {% data variables.product.prodname_code_scanning %} and editing workflow files, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)" and "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." + +### About autobuild for {% data variables.product.prodname_codeql %} + +Code scanning works by running queries against one or more databases. Each database contains a representation of all of the code in a single language in your repository. For the compiled languages C/C++, C#, and Java, the process of populating this database involves building the code and extracting data. {% data reusables.code-scanning.analyze-go %} + +{% data reusables.code-scanning.autobuild-compiled-languages %} + +If your workflow uses a `language` matrix, `autobuild` attempts to build each of the compiled languages listed in the matrix. Without a matrix `autobuild` attempts to build the supported compiled language that has the most source files in the repository. With the exception of Go, analysis of other compiled languages in your repository will fail unless you supply explicit build commands. + +{% note %} + +{% if currentVersion == "github-ae@latest" %}**Note**: For instructions on how to make sure your {% data variables.actions.hosted_runner %} has the required software installed, see "[Creating custom images](/actions/using-github-hosted-runners/creating-custom-images)." +{% else %} +**Note**: If you use self-hosted runners for {% data variables.product.prodname_actions %}, you may need to install additional software to use the `autobuild` process. Additionally, if your repository requires a specific version of a build tool, you may need to install it manually. For more information, see "[Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software)". +{% endif %} + +{% endnote %} + +#### C/C++ + +| Supported system type | System name | +|----|----| +| Operating system | Windows, macOS, and Linux | +| Build system | Windows: MSbuild and build scripts
Linux and macOS: Autoconf, Make, CMake, qmake, Meson, Waf, SCons, Linux Kbuild, and build scripts | + +The behavior of the `autobuild` step varies according to the operating system that the extraction runs on. On Windows, the `autobuild` step attempts to autodetect a suitable build method for C/C++ using the following approach: + +1. Invoke `MSBuild.exe` on the solution (`.sln`) or project (`.vcxproj`) file closest to the root. +If `autobuild` detects multiple solution or project files at the same (shortest) depth from the top level directory, it will attempt to build all of them. +2. Invoke a script that looks like a build script—_build.bat_, _build.cmd_, _and build.exe_ (in that order). + +On Linux and macOS, the `autobuild` step reviews the files present in the repository to determine the build system used: + +1. Look for a build system in the root directory. +2. If none are found, search subdirectories for a unique directory with a build system for C/C++. +3. Run an appropriate command to configure the system. + +#### C# + +| Supported system type | System name | +|----|----| +| Operating system | Windows and Linux | +| Build system | .NET and MSbuild, as well as build scripts | + +The `autobuild` process attempts to autodetect a suitable build method for C# using the following approach: + +1. Invoke `dotnet build` on the solution (`.sln`) or project (`.csproj`) file closest to the root. +2. Invoke `MSbuild` (Linux) or `MSBuild.exe` (Windows) on the solution or project file closest to the root. +If `autobuild` detects multiple solution or project files at the same (shortest) depth from the top level directory, it will attempt to build all of them. +3. Invoke a script that looks like a build script—_build_ and _build.sh_ (in that order, for Linux) or _build.bat_, _build.cmd_, _and build.exe_ (in that order, for Windows). + +#### Java + +| Supported system type | System name | +|----|----| +| Operating system | Windows, macOS, and Linux (no restriction) | +| Build system | Gradle, Maven and Ant | + +The `autobuild` process tries to determine the build system for Java codebases by applying this strategy: + +1. Search for a build file in the root directory. Check for Gradle then Maven then Ant build files. +2. Run the first build file found. If both Gradle and Maven files are present, the Gradle file is used. +3. Otherwise, search for build files in direct subdirectories of the root directory. If only one subdirectory contains build files, run the first file identified in that subdirectory (using the same preference as for 1). If more than one subdirectory contains build files, report an error. + +### Adding build steps for a compiled language + +{% data reusables.code-scanning.autobuild-add-build-steps %} For information on how to edit the workflow file, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning#editing-a-code-scanning-workflow)." + +After removing the `autobuild` step, uncomment the `run` step and add build commands that are suitable for your repository. The workflow `run` step runs command-line programs using the operating system's shell. You can modify these commands and add more commands to customize the build process. + +``` yaml +- run: | + make bootstrap + make release +``` + +For more information about the `run` keyword, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun)." + +If your repository contains multiple compiled languages, you can specify language-specific build commands. For example, if your repository contains C/C++, C# and Java, and `autobuild` correctly builds C/C++ and C# but fails to build Java, you could use the following configuration in your workflow, after the `init` step. This specifies build steps for Java while still using `autobuild` for C/C++ and C#: + +```yaml +- if: matrix.language == 'cpp' || matrix.language == 'csharp' + name: Autobuild + uses: github/codeql-action/autobuild@v1 + +- if: matrix.language == 'java' + name: Build Java + run: | + make bootstrap + make release +``` + +For more information about the `if` conditional, see "[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsif)." + +For more tips and tricks about why `autobuild` won't build your code, see "[Troubleshooting the {% data variables.product.prodname_codeql %} workflow](/code-security/secure-coding/troubleshooting-the-codeql-workflow)." + +If you added manual build steps for compiled languages and {% data variables.product.prodname_code_scanning %} is still not working on your repository, contact {% data variables.contact.contact_support %}. diff --git a/content/code-security/secure-coding/index.md b/content/code-security/secure-coding/index.md new file mode 100644 index 0000000000..fa2db6c762 --- /dev/null +++ b/content/code-security/secure-coding/index.md @@ -0,0 +1,32 @@ +--- +title: Finding security vulnerabilities and errors in your code +shortTitle: Secure coding +intro: 'Keep your code secure by using secret scanning to identify and fix potential security vulnerabilities and other errors in your code.' +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +### Table of Contents + +{% topic_link_in_list /automatically-scanning-your-code-for-vulnerabilities-and-errors %} + {% link_in_list /about-code-scanning %} + {% link_in_list /triaging-code-scanning-alerts-in-pull-requests %} + {% link_in_list /setting-up-code-scanning-for-a-repository %} + {% link_in_list /managing-code-scanning-alerts-for-your-repository %} + {% link_in_list /configuring-code-scanning %} + {% link_in_list /configuring-the-codeql-workflow-for-compiled-languages %} + {% link_in_list /troubleshooting-the-codeql-workflow %} + {% link_in_list /running-codeql-code-scanning-in-a-container %} +{% topic_link_in_list /integrating-with-code-scanning %} + {% link_in_list /about-integration-with-code-scanning %} + {% link_in_list /uploading-a-sarif-file-to-github %} + {% link_in_list /sarif-support-for-code-scanning %} +{% topic_link_in_list /using-codeql-code-scanning-with-your-existing-ci-system %} + {% link_in_list /running-codeql-code-scanning-in-your-ci-system %} + {% link_in_list /configuring-codeql-code-scanning-in-your-ci-system %} + {% link_in_list /troubleshooting-codeql-code-scanning-in-your-ci-system %} diff --git a/content/code-security/secure-coding/integrating-with-code-scanning.md b/content/code-security/secure-coding/integrating-with-code-scanning.md new file mode 100644 index 0000000000..65712c40a4 --- /dev/null +++ b/content/code-security/secure-coding/integrating-with-code-scanning.md @@ -0,0 +1,14 @@ +--- +title: Integrating with code scanning +shortTitle: Integration +intro: 'You can integrate third-party code analysis tools with {% data variables.product.prodname_dotcom %} {% data variables.product.prodname_code_scanning %} by uploading data as SARIF files.' +mapTopic: true +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + diff --git a/content/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository.md b/content/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository.md new file mode 100644 index 0000000000..6e1f1f93e3 --- /dev/null +++ b/content/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository.md @@ -0,0 +1,135 @@ +--- +title: Managing code scanning alerts for your repository +shortTitle: Managing alerts +intro: 'From the security view, you can view, fix, {% if currentVersion == "enterprise-server@2.22" %}or close{% else %}dismiss, or delete{% endif %} alerts for potential vulnerabilities or errors in your project''s code.' +product: '{% data reusables.gated-features.code-scanning %}' +permissions: 'If you have write permission to a repository you can manage {% data variables.product.prodname_code_scanning %} alerts for that repository.' +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository +--- + +{% data reusables.code-scanning.beta %} + +### About alerts from {% data variables.product.prodname_code_scanning %} + +You can set up {% data variables.product.prodname_code_scanning %} to check the code in a repository using the default {% data variables.product.prodname_codeql %} analysis, a third-party analysis, or multiple types of analysis. When the analysis is complete, the resulting alerts are displayed alongside each other in the security view of the repository. Results from third-party tools or from custom queries may not include all of the properties that you see for alerts detected by {% data variables.product.company_short %}'s default {% data variables.product.prodname_codeql %} analysis. For more information, see "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)." + +By default, {% data variables.product.prodname_code_scanning %} analyzes your code periodically on the default branch and during pull requests. For information about managing alerts on a pull request, see "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." + +{% data reusables.code-scanning.upload-sarif-alert-limit %} + +### About alerts details + +Each alert highlights a problem with the code and the name of the tool that identified it. You can see the line of code that triggered the alert, as well as properties of the alert, such as the severity and the nature of the problem. Alerts also tell you when the issue was first introduced. For alerts identified by {% data variables.product.prodname_codeql %} analysis, you will also see information on how to fix the problem. + +![Example alert from {% data variables.product.prodname_code_scanning %}](/assets/images/help/repository/code-scanning-alert.png) + +If you set up {% data variables.product.prodname_code_scanning %} using {% data variables.product.prodname_codeql %}, this can also detect data-flow problems in your code. Data-flow analysis finds potential security issues in code, such as: using data insecurely, passing dangerous arguments to functions, and leaking sensitive information. + +When {% data variables.product.prodname_code_scanning %} reports data-flow alerts, {% data variables.product.prodname_dotcom %} shows you how data moves through the code. {% data variables.product.prodname_code_scanning_capc %} allows you to identify the areas of your code that leak sensitive information, and that could be the entry point for attacks by malicious users. + +### Viewing the alerts for a repository + +Anyone with read permission for a repository can see {% data variables.product.prodname_code_scanning %} annotations on pull requests. For more information, see "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." + +You need write permission to view a summary of all the alerts for a repository on the **Security** tab. By default, alerts are shown for the default branch. + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-security %} +{% data reusables.repositories.sidebar-code-scanning-alerts %} +1. Under "{% data variables.product.prodname_code_scanning_capc %}," click the alert you'd like to explore. + ![Summary of alerts](/assets/images/help/repository/code-scanning-click-alert.png) +1. Optionally, if the alert highlights a problem with data flow, click **Show paths** to display the path from the data source to the sink where it's used. + ![The "Show paths" link on an alert](/assets/images/help/repository/code-scanning-show-paths.png) +1. Alerts from {% data variables.product.prodname_codeql %} analysis include a description of the problem. Click **Show more** for guidance on how to fix your code. + ![Details for an alert](/assets/images/help/repository/code-scanning-alert-details.png) + +### Fixing an alert + +Anyone with write permission for a repository can fix an alert by committing a correction to the code. If the repository has {% data variables.product.prodname_code_scanning %} scheduled to run on pull requests, it's best to raise a pull request with your correction. This will trigger {% data variables.product.prodname_code_scanning %} analysis of the changes and test that your fix doesn't introduce any new problems. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)" and "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." + +If you have write permission for a repository, you can view fixed alerts by viewing the summary of alerts and clicking **Closed**. For more information, see "[Viewing the alerts for a repository](#viewing-the-alerts-for-a-repository)." The "Closed" list shows fixed alerts and alerts that users have {% if currentVersion == "enterprise-server@2.22" %}closed{% else %}dismissed{% endif %}. + +Alerts may be fixed in one branch but not in another. You can use the "Branch" drop-down menu, on the summary of alerts, to check whether an alert is fixed in a particular branch. + +![Filtering alerts by branch](/assets/images/help/repository/code-scanning-branch-filter.png) + +{% if currentVersion == "enterprise-server@2.22" %} + +### Closing an alert + +Closing an alert is a way to resolve an alert that you don't think needs to be fixed. {% data reusables.code-scanning.close-alert-examples %} + +{% else %} + +### Dismissing or deleting alerts + +There are two ways of closing an alert. You can fix the problem in the code, or you can dismiss the alert. Alternatively, if you have admin permissions for the repository, you can delete alerts. Deleting alerts is useful in situations where you have set up a {% data variables.product.prodname_code_scanning %} tool and then decided to remove it, or where you have configured {% data variables.product.prodname_codeql %} analysis with a larger set of queries than you want to continue using, and you've then removed some queries from the tool. In both cases, deleting alerts allows you to clean up your {% data variables.product.prodname_code_scanning %} results. You can delete alerts from the summary list within the **Security** tab. + +Dismissing an alert is a way of closing an alert that you don't think needs to be fixed. {% data reusables.code-scanning.close-alert-examples %} You can dismiss alerts from {% data variables.product.prodname_code_scanning %} annotations in code, or from the summary list within the **Security** tab. + +When you dismiss an alert: + +- It's dismissed in all branches. +- The alert is removed from the number of current alerts for your project. +- The alert is moved to the "Closed" list in the summary of alerts, from where you can reopen it, if required. +- The reason why you closed the alert is recorded. +- Next time {% data variables.product.prodname_code_scanning %} runs, the same code won't generate an alert. + +When you delete an alert: + +- It's deleted in all branches. +- The alert is removed from the number of current alerts for your project. +- It is _not_ added to the "Closed" list in the summary of alerts. +- If the code that generated the alert stays the same, and the same {% data variables.product.prodname_code_scanning %} tool runs again without any configuration changes, the alert will be shown again in your analysis results. + +To dismiss or delete alerts: + +{% endif %} + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-security %} +{% data reusables.repositories.sidebar-code-scanning-alerts %} +{% if currentVersion == "enterprise-server@2.22" %} +{% data reusables.code-scanning.click-alert-in-list %} +1. Select the **Close** drop-down menu and click a reason for closing the alert. + ![Choosing reason for closing the alert via the Close drop-down](/assets/images/help/repository/code-scanning-alert-close-drop-down.png) + +{% data reusables.code-scanning.false-positive-fix-codeql %} + +{% else %} + +1. If you have admin permissions for the repository, and you want to delete alerts for this {% data variables.product.prodname_code_scanning %} tool, select some or all of the check boxes and click **Delete**. + + ![Deleting alerts](/assets/images/help/repository/code-scanning-delete-alerts.png) + + Optionally, you can use the filters to display a subset of alerts and then delete all matching alerts at once. For example, if you have removed a query from {% data variables.product.prodname_codeql %} analysis, you can use the "Rule" filter to list just the alerts for that query and then select and delete all of those alerts. + + ![Filter alerts by rule](/assets/images/help/repository/code-scanning-filter-by-rule.png) + +1. If you want to dismiss an alert, it's important to explore the alert first, so that you can choose the correct dismissal reason. Click the alert you'd like to explore. + + ![Open an alert from the summary list](/assets/images/help/repository/code-scanning-click-alert.png) + +1. Review the alert, then click **Dismiss** and choose a reason for closing the alert. + ![Choosing a reason for dismissing an alert](/assets/images/help/repository/code-scanning-alert-close-drop-down.png) + + {% data reusables.code-scanning.choose-alert-dismissal-reason %} + + {% data reusables.code-scanning.false-positive-fix-codeql %} + +#### Dismissing multiple alerts at once + +If a project has multiple alerts that you want to dismiss for the same reason, you can bulk dismiss them from the summary of alerts. Typically, you'll want to filter the list and then dismiss all of the matching alerts. For example, you might want to dismiss all of the current alerts in the project that have been tagged for a particular Common Weakness Enumeration (CWE) vulnerability. + +{% endif %} + +### Further reading + +- "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)" +- "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)" +- "[About integration with {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/about-integration-with-code-scanning)" diff --git a/content/code-security/secure-coding/running-codeql-code-scanning-in-a-container.md b/content/code-security/secure-coding/running-codeql-code-scanning-in-a-container.md new file mode 100644 index 0000000000..644c885501 --- /dev/null +++ b/content/code-security/secure-coding/running-codeql-code-scanning-in-a-container.md @@ -0,0 +1,72 @@ +--- +title: Running CodeQL code scanning in a container +shortTitle: '{% data variables.product.prodname_code_scanning_capc %} in a container' +intro: 'You can run {% data variables.product.prodname_code_scanning %} in a container by ensuring that all processes run in the same container.' +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta %} + +### About {% data variables.product.prodname_code_scanning %} with a containerized build + +If you're setting up {% data variables.product.prodname_code_scanning %} for a compiled language, and you're building the code in a containerized environment, the analysis may fail with the error message "No source code was seen during the build." This indicates that {% data variables.product.prodname_codeql %} was unable to monitor your code as it was compiled. + +You must run {% data variables.product.prodname_codeql %} in the same container in which you build your code. This applies whether you are using the {% data variables.product.prodname_codeql_runner %}, or {% data variables.product.prodname_actions %}. If you're using the {% data variables.product.prodname_codeql_runner %}, run it in the container where your code builds. For more information about the {% data variables.product.prodname_codeql_runner %}, see "[Running {% data variables.product.prodname_codeql %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)." If you're using {% data variables.product.prodname_actions %}, configure your workflow to run all the actions in the same container. For more information, see "[Example workflow](#example-workflow)." + +### Dependencies + +You may have difficulty running {% data variables.product.prodname_code_scanning %} if the container you're using is missing certain dependencies (for example, Git must be installed and added to the PATH variable). If you encounter dependency issues, review the list of software typically included on {% data variables.product.prodname_dotcom %}'s virtual environments. For more information, see the version-specific `readme` files in these locations: + +* Linux: https://github.com/actions/virtual-environments/tree/main/images/linux +* macOS: https://github.com/actions/virtual-environments/tree/main/images/macos +* Windows: https://github.com/actions/virtual-environments/tree/main/images/win + +### Example workflow + +This sample workflow uses {% data variables.product.prodname_actions %} to run {% data variables.product.prodname_codeql %} analysis in a containerized environment. The value of `container.image` identifies the container to use. In this example the image is named `codeql-container`, with a tag of `f0f91db`. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontainer)." + +``` yaml +name: "{% data variables.product.prodname_codeql %}" + +on: + push: + branches: [main] + pull_request: + branches: [main] + schedule: + - cron: '0 0 * * 0' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: [java] + + # Specify the container in which actions will run + container: + image: codeql-container:f0f91db + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Initialize {% data variables.product.prodname_codeql %} + uses: github/codeql-action/init@v1 + with: + languages: {% raw %}${{ matrix.language }}{% endraw %} + - name: Build + run: | + ./configure + make + - name: Perform {% data variables.product.prodname_codeql %} Analysis + uses: github/codeql-action/analyze@v1 +``` diff --git a/content/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system.md b/content/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system.md new file mode 100644 index 0000000000..e1e500984d --- /dev/null +++ b/content/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system.md @@ -0,0 +1,175 @@ +--- +title: Running CodeQL code scanning in your CI system +shortTitle: Running in your CI +intro: 'You can use the {% data variables.product.prodname_codeql_runner %} to perform {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in a third-party continuous integration system.' +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + + +{% data reusables.code-scanning.beta-codeql-runner %} +{% data reusables.code-scanning.beta %} +{% data reusables.code-scanning.enterprise-enable-code-scanning %} + +### Using {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} with your existing CI system + +If you use a continuous integration or continuous delivery/deployment (CI/CD) system other than {% data variables.product.prodname_actions %}, you can use your existing system to run {% data variables.product.prodname_dotcom %}'s {% data variables.product.prodname_codeql %} analysis and upload the results to {% data variables.product.prodname_dotcom %}. To do this, use the {% data variables.product.prodname_codeql_runner %}. + +### About the {% data variables.product.prodname_codeql_runner %} + +{% data reusables.code-scanning.about-code-scanning %} For information, see "[About {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/about-code-scanning)." + +You can use the {% data variables.product.prodname_codeql_runner %} to run {% data variables.product.prodname_code_scanning %} on code that you're processing in a third-party continuous integration (CI) system. Alternatively, you can use {% data variables.product.prodname_actions %} to run {% data variables.product.prodname_code_scanning %} on {% data variables.product.product_name %}. For information, see "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)." + +The {% data variables.product.prodname_codeql_runner %} is a command-line tool that runs {% data variables.product.prodname_codeql %} analysis on a checkout of a {% data variables.product.prodname_dotcom %} repository. You add the runner to your third-party system, then call the runner to analyze code and upload the results to {% data variables.product.product_name %}. These results are displayed as {% data variables.product.prodname_code_scanning %} alerts in the repository. + +{% note %} + +**Notes:** +{% if currentVersion == "free-pro-team@latest" %} +* The {% data variables.product.prodname_codeql_runner %} uses the {% data variables.product.prodname_codeql %} CLI to analyze code and therefore has the same license conditions. It's free to use on public repositories that are maintained on {% data variables.product.prodname_dotcom_the_website %}, and available to use on private repositories that are owned by customers with an {% data variables.product.prodname_advanced_security %} license. For information, see "[{% data variables.product.product_name %} {% data variables.product.prodname_codeql %} Terms and Conditions](https://securitylab.github.com/tools/codeql/license)" and "[{% data variables.product.prodname_codeql %} CLI](https://codeql.github.com/docs/codeql-cli/)." +{% else %} +* The {% data variables.product.prodname_codeql_runner %} is available to customers with an {% data variables.product.prodname_advanced_security %} license. +{% endif %} +* The {% data variables.product.prodname_codeql_runner %} shouldn't be confused with the {% data variables.product.prodname_codeql %} CLI. The {% data variables.product.prodname_codeql %} CLI is an interactive command-line interface that lets you create {% data variables.product.prodname_codeql %} databases for security research and run {% data variables.product.prodname_codeql %} queries. For more information, see "[{% data variables.product.prodname_codeql %} CLI](https://codeql.github.com/docs/codeql-cli/)." +{% endnote %} + +### Downloading the {% data variables.product.prodname_codeql_runner %} + +You can download the {% data variables.product.prodname_codeql_runner %} from https://{% if currentVersion == "enterprise-server@2.22" or currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/github/codeql-action/releases. On some operating systems, you may need to change permissions for the downloaded file before you can run it. + +On Linux: + +```shell +chmod +x codeql-runner-linux +``` + +On macOS: + +```shell +chmod +x codeql-runner-macos +sudo xattr -d com.apple.quarantine codeql-runner-macos +``` + +On Windows, the `codeql-runner-win.exe` file usually requires no change to permissions. + +### Adding the {% data variables.product.prodname_codeql_runner %} to your CI system + +Once you download the {% data variables.product.prodname_codeql_runner %} and verify that it can be executed, you should make the runner available to each CI server that you intend to use for {% data variables.product.prodname_code_scanning %}. For example, you might configure each server to copy the runner from a central, internal location. Alternatively, you could use the REST API to get the runner directly from {% data variables.product.prodname_dotcom %}, for example: + +```shell +wget https://{% if currentVersion == "enterprise-server@2.22" or currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/github/codeql-action/releases/latest/download/codeql-runner-linux +chmod +x codeql-runner-linux +``` + +In addition to this, each CI server also needs: + +- A {% data variables.product.prodname_github_app %} or personal access token for the {% data variables.product.prodname_codeql_runner %} to use. You must use an access token with the `repo` scope, or a {% data variables.product.prodname_github_app %} with the `security_events` write permission, and `metadata` and `contents` read permissions. For information, see "[Building {% data variables.product.prodname_github_apps %}](/developers/apps/building-github-apps)" and "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." +- Access to the {% data variables.product.prodname_codeql %} bundle associated with this release of the {% data variables.product.prodname_codeql_runner %}. This package contains queries and libraries needed for {% data variables.product.prodname_codeql %} analysis, plus the {% data variables.product.prodname_codeql %} CLI, which is used internally by the runner. For information, see "[{% data variables.product.prodname_codeql %} CLI](https://codeql.github.com/docs/codeql-cli/)." + +The options for providing access to the {% data variables.product.prodname_codeql %} bundle are: + +1. Allow the CI servers access to https://{% if currentVersion == "enterprise-server@2.22" or currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/github/codeql-action so that the {% data variables.product.prodname_codeql_runner %} can download the bundle automatically. +{% if currentVersion == "enterprise-server@2.22" %} +1. Mirror the `github/codeql-action` repository on {% data variables.product.product_name %}. Unless you specify the `--codeql-path` flag, the runner automatically checks for the bundle in this location and on {% data variables.product.prodname_dotcom_the_website %}.{% endif %} +1. Manually download/extract the bundle, store it with other central resources, and use the `--codeql-path` flag to specify the location of the bundle in calls to initialize the {% data variables.product.prodname_codeql_runner %}. + +### Calling the {% data variables.product.prodname_codeql_runner %} + +You should call the {% data variables.product.prodname_codeql_runner %} from the checkout location of the repository you want to analyze. The two main commands are: + +1. `init` required to initialize the runner and create a {% data variables.product.prodname_codeql %} database for each language to be analyzed. These databases are populated and analyzed by subsequent commands. +1. `analyze` required to populate the {% data variables.product.prodname_codeql %} databases, analyze them, and upload results to {% data variables.product.product_name %}. + +For both commands, you must specify the URL of {% data variables.product.product_name %}, the repository *OWNER/NAME*, and the {% data variables.product.prodname_github_apps %} or personal access token to use for authentication. You also need to specify the location of the CodeQL bundle, unless the CI server has access to download it directly from the `github/codeql-action` repository. + +You can configure where the {% data variables.product.prodname_codeql_runner %} stores the CodeQL bundle for future analysis on a server using the `--tools-dir` flag and where it stores temporary files during analysis using `--temp-dir`. + +To view the command-line reference for the runner, use the `-h` flag. For example, to list all commands run: `codeql-runner-OS -h`, or to list all the flags available for the `init` command run: `codeql-runner-OS init -h` (where `OS` varies according to the executable that you are using). For more information, see "[Configuring {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system#codeql-runner-command-reference)." + +{% data reusables.code-scanning.upload-sarif-alert-limit %} + +#### Basic example + +This example runs {% data variables.product.prodname_codeql %} analysis on a Linux CI server for the `octo-org/example-repo` repository hosted on `{% data variables.command_line.git_url_example %}`. The process is very simple because the repository contains only languages that can be analyzed by {% data variables.product.prodname_codeql %} directly, without being built (that is, Go, JavaScript, Python, and TypeScript). + +1. Check out the repository to analyze. +1. Move into the directory where the repository is checked out. +1. Initialize the {% data variables.product.prodname_codeql_runner %} and create {% data variables.product.prodname_codeql %} databases for the languages detected. + + ```shell + $ /path/to-runner/codeql-runner-linux init --repository octo-org/example-repo + --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN + > Cleaning temp directory /srv/checkout/example-repo/codeql-runner + > ... + > Created CodeQL database at /srv/checkout/example-repo/codeql-runner/codeql_databases/javascript. + ``` + +1. Populate the {% data variables.product.prodname_codeql_runner %} databases, analyze them, and upload the results to {% data variables.product.product_name %}. + + ```shell + $ /path/to-runner/codeql-runner-linux analyze --repository octo-org/example-repo + --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN + --commit 5b6a3078b31dc346e5ce7b86837d6abbe7a18bbd --ref refs/heads/main + > Finalizing database creation + > ... + > POST /repos/octo-org/example-repo/code-scanning/sarifs - 202 in 786ms + > Successfully uploaded results + ``` + +The server has access to download the {% data variables.product.prodname_codeql %} bundle directly from the `github/codeql-action` repository, so there is no need to use the `--codeql-path` flag. When the analysis is complete, the {% data variables.product.prodname_codeql_runner %} uploads the results to the {% data variables.product.prodname_code_scanning %} view. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." + +#### Compiled language example + +This example is similar to the previous example, however this time the repository has code in C/C++, C#, or Java. To create a {% data variables.product.prodname_codeql %} database for these languages, the CLI needs to monitor the build. At the end of the initialization process, the runner reports the command you need to set up the environment before building the code. You need to run this command, before calling the normal CI build process, and then running the `analyze` command. + +1. Check out the repository to analyze. +1. Move into the directory where the repository is checked out. +1. Initialize the {% data variables.product.prodname_codeql_runner %} and create {% data variables.product.prodname_codeql %} databases for the languages detected. + + ```shell + $ /path/to-runner/codeql-runner-linux init --repository octo-org/example-repo-2 + --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN + > Cleaning temp directory /srv/checkout/example-repo-2/codeql-runner + > ... + > CodeQL environment output to "/srv/checkout/example-repo-2/codeql-runner/codeql-env.json" + and "/srv/checkout/example-repo-2/codeql-runner/codeql-env.sh". + Please export these variables to future processes so that CodeQL can monitor the build, for example by running " + . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh". + ``` + +1. Source the script generated by the `init` action to set up the environment to monitor the build. Note the leading dot and space in the following code snippet. + + ```shell + $ . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh + ``` + +1. Build the code. On macOS, you need to prefix the build command with the environment variable `$CODEQL_RUNNER`. For more information, see "[Troubleshooting CodeQL code scanning in your CI system](/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system#no-code-found-during-the-build)." + +1. Populate the {% data variables.product.prodname_codeql %} databases, analyze them, and upload the results to {% data variables.product.prodname_dotcom %}. + + ```shell + $ /path/to-runner/codeql-runner-linux analyze --repository octo-org/example-repo-2 + --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN + --commit ae7b655ef30b50fb726ae7b3daa79571a39d194d --ref refs/heads/main + > Finalizing database creation + > ... + > POST /repos/octo-org/example-repo-2/code-scanning/sarifs - 202 in 573ms + > Successfully uploaded results + ``` + +{% note %} + +**Note:** If you use a containerized build, you need to run the {% data variables.product.prodname_codeql_runner %} in the container where your build task takes place. + +{% endnote %} + +### Further reading + +- "[Configuring {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system)" +- "[Troubleshooting {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system)" diff --git a/content/code-security/secure-coding/sarif-support-for-code-scanning.md b/content/code-security/secure-coding/sarif-support-for-code-scanning.md new file mode 100644 index 0000000000..74e4f0d3d6 --- /dev/null +++ b/content/code-security/secure-coding/sarif-support-for-code-scanning.md @@ -0,0 +1,429 @@ +--- +title: SARIF support for code scanning +shortTitle: SARIF support +intro: 'To display results from a third-party static analysis tool in your repository on {% data variables.product.prodname_dotcom %}, you''ll need your results stored in a SARIF file that supports a specific subset of the SARIF 2.1.0 JSON schema for {% data variables.product.prodname_code_scanning %}. If you use the default {% data variables.product.prodname_codeql %} static analysis engine, then your results will display in your repository on {% data variables.product.prodname_dotcom %} automatically.' +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta %} + +### About SARIF support + +SARIF (Static Analysis Results Interchange Format) is an [OASIS Standard](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) that defines an output file format. The SARIF standard is used to streamline how static analysis tools share their results. {% data variables.product.prodname_code_scanning_capc %} supports a subset of the SARIF 2.1.0 JSON schema. + +To upload a SARIF file from a third-party static code analysis engine, you'll need to ensure that uploaded files use the SARIF 2.1.0 version. {% data variables.product.prodname_dotcom %} will parse the SARIF file and show alerts using the results in your repository as a part of the {% data variables.product.prodname_code_scanning %} experience. For more information, see "[Uploading a SARIF file to {% data variables.product.prodname_dotcom %}](/code-security/secure-coding/uploading-a-sarif-file-to-github)." For more information about the SARIF 2.1.0 JSON schema, see [`sarif-schema-2.1.0.json`](https://github.com/oasis-tcs/sarif-spec/blob/master/Schemata/sarif-schema-2.1.0.json). + +If you're using {% data variables.product.prodname_actions %} with the {% data variables.product.prodname_codeql_workflow %} or using the {% data variables.product.prodname_codeql_runner %}, then the {% data variables.product.prodname_code_scanning %} results will automatically use the supported subset of SARIF 2.1.0. For more information, see "[Enabling {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)" or "[Running {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)." + +{% data variables.product.prodname_dotcom %} uses properties in the SARIF file to display alerts. For example, the `shortDescription` and `fullDescription` appear at the top of a {% data variables.product.prodname_code_scanning %} alert. The `location` allows {% data variables.product.prodname_dotcom %} to show annotations in your code file. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." + +If you're new to SARIF and want to learn more, see Microsoft's [`SARIF tutorials`](https://github.com/microsoft/sarif-tutorials) repository. + +### Preventing duplicate alerts using fingerprints + +Each time the results of a new code scan are uploaded, the results are processed and alerts are added to the repository. To prevent duplicate alerts for the same problem, {% data variables.product.prodname_code_scanning %} uses fingerprints to match results across various runs so they only appear once in the latest run for the selected branch. This makes it possible to match alerts to the right line of code when files are edited. + +{% data variables.product.prodname_dotcom %} uses the `partialFingerprints` property in the OASIS standard to detect when two results are logically identical. For more information, see the "[partialFingerprints property](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html#_Toc16012611)" entry in the OASIS documentation. + +SARIF files created by the {% data variables.product.prodname_codeql_workflow %} or using the {% data variables.product.prodname_codeql_runner %} include fingerprint data. If you upload a SARIF file using the `upload-sarif` action and this data is missing, {% data variables.product.prodname_dotcom %} attempts to populate the `partialFingerprints` field from the source files. For more information about uploading results, see "[Uploading a SARIF file to {% data variables.product.prodname_dotcom %}](/code-security/secure-coding/uploading-a-sarif-file-to-github#uploading-a-code-scanning-analysis-with-github-actions)." + +If you upload a SARIF file without fingerprint data using the `/code-scanning/sarifs` API endpoint, the {% data variables.product.prodname_code_scanning %} alerts will be processed and displayed, but users may see duplicate alerts. To avoid seeing duplicate alerts, you should calculate fingerprint data and populate the `partialFingerprints` property before you upload the SARIF file. You may find the script that the `upload-sarif` action uses a helpful starting point: https://github.com/github/codeql-action/blob/main/src/fingerprints.ts. For more information about the API, see "[Upload an analysis as SARIF data](/rest/reference/code-scanning#upload-an-analysis-as-sarif-data)." + +### Validating your SARIF file + + + +You can check a SARIF file is compatible with {% data variables.product.prodname_code_scanning %} by testing it against the {% data variables.product.prodname_dotcom %} ingestion rules. For more information, visit the [Microsoft SARIF validator](https://sarifweb.azurewebsites.net/). + +{% data reusables.code-scanning.upload-sarif-alert-limit %} + +### Supported SARIF output file properties + +If you use a code analysis engine other than {% data variables.product.prodname_codeql %}, you can review the supported SARIF properties to optimize how your analysis results will appear on {% data variables.product.prodname_dotcom %}. + +Any valid SARIF 2.1.0 output file can be uploaded, however, {% data variables.product.prodname_code_scanning %} will only use the following supported properties. + +#### `sarifLog` object + +| Name | Description | +|----|----| +| `$schema` | **Required.** The URI of the SARIF JSON schema for version 2.1.0. For example, `https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json`. | +| `version` | **Required.** {% data variables.product.prodname_code_scanning_capc %} only supports SARIF version `2.1.0`. +| `runs[]` | **Required.** A SARIF file contains an array of one or more runs. Each run represents a single run of an analysis tool. For more information about a `run`, see the [`run` object](#run-object). + +#### `run` object + +{% data variables.product.prodname_code_scanning_capc %} uses the `run` object to filter results by tool and provide information about the source of a result. The `run` object contains the `tool.driver` tool component object, which contains information about the tool that generated the results. Each `run` can only have results for one analysis tool. + +| Name | Description | +|----|----| +| `tool.driver.name` | **Required.** The name of the analysis tool. {% data variables.product.prodname_code_scanning_capc %} displays the name on {% data variables.product.prodname_dotcom %} to allow you to filter results by tool. | +| `tool.driver.version` | **Optional.** The version of the analysis tool. {% data variables.product.prodname_code_scanning_capc %} uses the version number to track when results may have changed due to a tool version change rather than a change in the code being analyzed. If the SARIF file includes the `semanticVersion` field, `version` is not used by {% data variables.product.prodname_code_scanning %}. | +| `tool.driver.semanticVersion` | **Optional.** The version of the analysis tool, specified by the Semantic Versioning 2.0 format. {% data variables.product.prodname_code_scanning_capc %} uses the version number to track when results may have changed due to a tool version change rather than a change in the code being analyzed. If the SARIF file includes the `semanticVersion` field, `version` is not used by {% data variables.product.prodname_code_scanning %}. For more information, see "[Semantic Versioning 2.0.0](https://semver.org/)" in the Semantic Versioning documentation. | +| `tool.driver.rules[]` | **Required.** An array of `reportingDescriptor` objects that represent rules. The analysis tool uses rules to find problems in the code being analyzed. For more information, see the [`reportingDescriptor` object](#reportingdescriptor-object). | +| `results[]` | **Required.** The results of the analysis tool. {% data variables.product.prodname_code_scanning_capc %} displays the results on {% data variables.product.prodname_dotcom %}. For more information, see the [`result` object](#result-object). + +#### `reportingDescriptor` object + +| Name | Description | +|----|----| +| `id` | **Required.** A unique identifier for the rule. The `id` is referenced from other parts of the SARIF file and may be used by {% data variables.product.prodname_code_scanning %} to display URLs on {% data variables.product.prodname_dotcom %}. | +| `name` | **Optional.** The name of the rule. {% data variables.product.prodname_code_scanning_capc %} displays the name to allow results to be filtered by rule on {% data variables.product.prodname_dotcom %}. | +| `shortDescription.text` | **Required.** A concise description of the rule. {% data variables.product.prodname_code_scanning_capc %} displays the short description on {% data variables.product.prodname_dotcom %} next to the associated results. +| `fullDescription.text` | **Required.** A description of the rule. {% data variables.product.prodname_code_scanning_capc %} displays the full description on {% data variables.product.prodname_dotcom %} next to the associated results. The max number of characters is limited to 1000. +| `defaultConfiguration.level` | **Optional.** Default severity level of the rule. {% data variables.product.prodname_code_scanning_capc %} uses severity levels to help you understand how critical the result is for a given rule. This value can be overridden by the `level` attribute in the `result` object. For more information, see the [`result` object](#result-object). Default: `warning`. +| `help.text` | **Required.** Documentation for the rule using text format. {% data variables.product.prodname_code_scanning_capc %} displays this help documentation next to the associated results. +| `help.markdown` | **Recommended.** Documentation for the rule using Markdown format. {% data variables.product.prodname_code_scanning_capc %} displays this help documentation next to the associated results. When `help.markdown` is available, it is displayed instead of `help.text`. +| `properties.tags[]` | **Optional.** An array of strings. {% data variables.product.prodname_code_scanning_capc %} uses `tags` to allow you to filter results on {% data variables.product.prodname_dotcom %}. For example, it is possible to filter to all results that have the tag `security`. +| `properties.precision` | **Recommended.** A string that indicates how often the results indicated by this rule are true. For example, if a rule has a known high false-positive rate, the precision should be `low`. {% data variables.product.prodname_code_scanning_capc %} orders results by precision on {% data variables.product.prodname_dotcom %} so that the results with the highest `level`, and highest `precision` are shown first. Can be one of: `very-high`, `high`, `medium`, or `low`. + +#### `result` object + +{% data reusables.code-scanning.upload-sarif-alert-limit %} + +| Name | Description | +|----|----| +| `ruleId`| **Optional.** The unique identifier of the rule (`reportingDescriptor.id`). For more information, see the [`reportingDescriptor` object](#reportingdescriptor-object). {% data variables.product.prodname_code_scanning_capc %} uses the rule identifier to filter results by rule on {% data variables.product.prodname_dotcom %}. +| `ruleIndex`| **Optional.** The index of the associated rule (`reportingDescriptor` object) in the tool component `rules` array. For more information, see the [`run` object](#run-object). +| `rule`| **Optional.** A reference used to locate the rule (reporting descriptor) for this result. For more information, see the [`reportingDescriptor` object](#reportingdescriptor-object). +| `level`| **Optional.** The severity of the result. This level overrides the default severity defined by the rule. {% data variables.product.prodname_code_scanning_capc %} uses the level to filter results by severity on {% data variables.product.prodname_dotcom %}. +| `message.text`| **Required.** A message that describes the result. {% data variables.product.prodname_code_scanning_capc %} displays the message text as the title of the result. Only the first sentence of the message will be displayed when visible space is limited. +| `locations[]`| **Required.** The set of locations where the result was detected up to a maximum of 10. Only one location should be included unless the problem can only be corrected by making a change at every specified location. **Note:** At least one location is required for {% data variables.product.prodname_code_scanning %} to display a result. {% data variables.product.prodname_code_scanning_capc %} will use this property to decide which file to annotate with the result. Only the first value of this array is used. All other values are ignored. +| `partialFingerprints`| **Required.** A set of strings used to track the unique identity of the result. {% data variables.product.prodname_code_scanning_capc %} uses `partialFingerprints` to accurately identify which results are the same across commits and branches. {% data variables.product.prodname_code_scanning_capc %} will attempt to use `partialFingerprints` if they exist. If you are uploading third-party SARIF files with the `upload-action`, the action will create `partialFingerprints` for you when they are not included in the SARIF file. For more information, see "[Preventing duplicate alerts using fingerprints](#preventing-duplicate-alerts-using-fingerprints)." **Note:** {% data variables.product.prodname_code_scanning_capc %} only uses the `primaryLocationLineHash`. +| `codeFlows[].threadFlows[].locations[]`| **Optional.** An array of `location` objects for a `threadFlow` object, which describes the progress of a program through a thread of execution. A `codeFlow` object describes a pattern of code execution used to detect a result. If code flows are provided, {% data variables.product.prodname_code_scanning %} will expand code flows on {% data variables.product.prodname_dotcom %} for the relevant result. For more information, see the [`location` object](#location-object). +| `relatedLocations[]`| A set of locations relevant to this result. {% data variables.product.prodname_code_scanning_capc %} will link to related locations when they are embedded in the result message. For more information, see the [`location` object](#location-object). + +#### `location` object + +A location within a programming artifact, such as a file in the repository or a file that was generated during a build. + +| Name | Description | +|----|----| +| `location.id` | **Optional.** A unique identifier that distinguishes this location from all other locations within a single result object. +| `location.physicalLocation` | **Required.** Identifies the artifact and region. For more information, see the [`physicalLocation`](#physicallocation-object). +| `location.message.text` | **Optional.** A message relevant to the location. + +#### `physicalLocation` object + +| Name | Description | +|----|----| +| `artifactLocation.uri`| **Required.** A URI indicating the location of an artifact, usually a file either in the repository or generated during a build. If the URI is relative, it should be relative to the root of the {% data variables.product.prodname_dotcom %} repository being analyzed. For example, main.js or src/script.js are relative to the root of the repository. If the URI is absolute, {% data variables.product.prodname_code_scanning %} can use the URI to checkout the artifact and match up files in the repository. For example, `https://github.com/ghost/example/blob/00/src/promiseUtils.js`. +| `region.startLine` | **Required.** The line number of the first character in the region. +| `region.startColumn` | **Required.** The column number of the first character in the region. +| `region.endLine` | **Required.** The line number of the last character in the region. +| `region.endColumn` | **Required.** The column number of the character following the end of the region. + +### SARIF output file examples + +These example SARIF output files show supported properties and example values. + +#### Example with minimum required properties + +This SARIF output file has example values to show the minimum required properties for {% data variables.product.prodname_code_scanning %} results to work as expected. If you remove any properties or don't include values, this data will not be displayed correctly or sync on {% data variables.product.prodname_dotcom %}. + + +```json +{ + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "version": "2.1.0", + "runs": [ + { + "tool": { + "driver": { + "name": "Tool Name", + "rules": [ + { + "id": "R01" + } + ] + } + }, + "results": [ + { + "ruleId": "R01", + "message": { + "text": "Result text. This result does not have a rule associated." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "fileURI" + }, + "region": { + "startLine": 2, + "startColumn": 7, + "endColumn": 10 + } + } + } + ], + "partialFingerprints": { + "primaryLocationLineHash": "39fa2ee980eb94b0:1" + } + } + ] + } + ] +} +``` + +#### Example showing all supported SARIF properties + +This SARIF output file has example values to show all supported SARIF properties for {% data variables.product.prodname_code_scanning %}. + +```json +{ + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "version": "2.1.0", + "runs": [ + { + "tool": { + "driver": { + "name": "Tool Name", + "semanticVersion": "2.0.0", + "rules": [ + { + "id": "3f292041e51d22005ce48f39df3585d44ce1b0ad", + "name": "js/unused-local-variable", + "shortDescription": { + "text": "Unused variable, import, function or class" + }, + "fullDescription": { + "text": "Unused variables, imports, functions or classes may be a symptom of a bug and should be examined carefully." + }, + "defaultConfiguration": { + "level": "note" + }, + "properties": { + "tags": [ + "maintainability" + ], + "precision": "very-high" + } + }, + { + "id": "d5b664aefd5ca4b21b52fdc1d744d7d6ab6886d0", + "name": "js/inconsistent-use-of-new", + "shortDescription": { + "text": "Inconsistent use of 'new'" + }, + "fullDescription": { + "text": "If a function is intended to be a constructor, it should always be invoked with 'new'. Otherwise, it should always be invoked as a normal function, that is, without 'new'." + }, + "properties": { + "tags": [ + "reliability", + "correctness", + "language-features" + ], + "precision": "very-high" + } + }, + { + "id": "R01" + } + ] + } + }, + "results": [ + { + "ruleId": "3f292041e51d22005ce48f39df3585d44ce1b0ad", + "ruleIndex": 0, + "message": { + "text": "Unused variable foo." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.js", + "uriBaseId": "%SRCROOT%" + }, + "region": { + "startLine": 2, + "startColumn": 7, + "endColumn": 10 + } + } + } + ], + "partialFingerprints": { + "primaryLocationLineHash": "39fa2ee980eb94b0:1", + "primaryLocationStartColumnFingerprint": "4" + } + }, + { + "ruleId": "d5b664aefd5ca4b21b52fdc1d744d7d6ab6886d0", + "ruleIndex": 1, + "message": { + "text": "Function resolvingPromise is sometimes invoked as a constructor (for example [here](1)), and sometimes as a normal function (for example [here](2))." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/promises.js", + "uriBaseId": "%SRCROOT%" + }, + "region": { + "startLine": 2 + } + } + } + ], + "partialFingerprints": { + "primaryLocationLineHash": "5061c3315a741b7d:1", + "primaryLocationStartColumnFingerprint": "7" + }, + "relatedLocations": [ + { + "id": 1, + "physicalLocation": { + "artifactLocation": { + "uri": "src/ParseObject.js", + "uriBaseId": "%SRCROOT%" + }, + "region": { + "startLine": 2281, + "startColumn": 33, + "endColumn": 55 + } + }, + "message": { + "text": "here" + } + }, + { + "id": 2, + "physicalLocation": { + "artifactLocation": { + "uri": "src/LiveQueryClient.js", + "uriBaseId": "%SRCROOT%" + }, + "region": { + "startLine": 166 + } + }, + "message": { + "text": "here" + } + } + ] + }, + { + "ruleId": "R01", + "message": { + "text": "Specifying both [ruleIndex](1) and [ruleID](2) might lead to inconsistencies." + }, + "level": "error", + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "full.sarif", + "uriBaseId": "%SRCROOT%" + }, + "region": { + "startLine": 54, + "startColumn": 10, + "endLine": 55, + "endColumn": 25 + } + } + } + ], + "relatedLocations": [ + { + "id": 1, + "physicalLocation": { + "artifactLocation": { + "uri": "full.sarif" + }, + "region": { + "startLine": 81, + "startColumn": 10, + "endColumn": 18 + } + }, + "message": { + "text": "here" + } + }, + { + "id": 2, + "physicalLocation": { + "artifactLocation": { + "uri": "full.sarif" + }, + "region": { + "startLine": 82, + "startColumn": 10, + "endColumn": 21 + } + }, + "message": { + "text": "here" + } + } + ], + "codeFlows": [ + { + "threadFlows": [ + { + "locations": [ + { + "location": { + "physicalLocation": { + "region": { + "startLine": 11, + "endLine": 29, + "startColumn": 10, + "endColumn": 18 + }, + "artifactLocation": { + "uriBaseId": "%SRCROOT%", + "uri": "full.sarif" + } + }, + "message": { + "text": "Rule has index 0" + } + } + }, + { + "location": { + "physicalLocation": { + "region": { + "endColumn": 47, + "startColumn": 12, + "startLine": 12 + }, + "artifactLocation": { + "uriBaseId": "%SRCROOT%", + "uri": "full.sarif" + } + } + } + } + ] + } + ] + } + ], + "partialFingerprints": { + "primaryLocationLineHash": "ABC:2" + } + } + ], + "columnKind": "utf16CodeUnits" + } + ] +} +``` diff --git a/content/code-security/secure-coding/setting-up-code-scanning-for-a-repository.md b/content/code-security/secure-coding/setting-up-code-scanning-for-a-repository.md new file mode 100644 index 0000000000..5b5da7a314 --- /dev/null +++ b/content/code-security/secure-coding/setting-up-code-scanning-for-a-repository.md @@ -0,0 +1,120 @@ +--- +title: Setting up code scanning for a repository +shortTitle: Setting up code scanning +intro: 'You can set up {% data variables.product.prodname_code_scanning %} by adding a workflow to your repository.' +product: '{% data reusables.gated-features.code-scanning %}' +permissions: 'If you have write permissions to a repository, you can set up or configure {% data variables.product.prodname_code_scanning %} for that repository.' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta %} +{% data reusables.code-scanning.enterprise-enable-code-scanning-actions %} + +### Options for setting up {% data variables.product.prodname_code_scanning %} + +You decide how to generate {% data variables.product.prodname_code_scanning %} alerts, and which tools to use, at a repository level. {% data variables.product.product_name %} provides fully integrated support for {% data variables.product.prodname_codeql %} analysis, and also supports analysis using third-party tools. For more information, see "[About {% data variables.product.prodname_codeql %}](/code-security/secure-coding/about-code-scanning#about-codeql)." + +{% data reusables.code-scanning.enabling-options %} + +### Setting up {% data variables.product.prodname_code_scanning %} using actions + +{% if currentVersion == "free-pro-team@latest" %}Using actions to run {% data variables.product.prodname_code_scanning %} will use minutes. For more information, see "[About billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions)."{% endif %} + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-security %} +3. To the right of "{% data variables.product.prodname_code_scanning_capc %} alerts", click **Set up {% data variables.product.prodname_code_scanning %}**. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.0" %}If {% data variables.product.prodname_code_scanning %} is missing, you need to ask an organization owner or repository administrator to enable {% data variables.product.prodname_GH_advanced_security %}. For more information, see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)" or "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)."{% endif %} + !["Set up {% data variables.product.prodname_code_scanning %}" button to the right of "{% data variables.product.prodname_code_scanning_capc %}" in the Security Overview](/assets/images/help/security/overview-set-up-code-scanning.png) +4. Under "Get started with {% data variables.product.prodname_code_scanning %}", click **Set up this workflow** on the {% data variables.product.prodname_codeql_workflow %} or on a third-party workflow. + !["Set up this workflow" button under "Get started with {% data variables.product.prodname_code_scanning %}" heading](/assets/images/help/repository/code-scanning-set-up-this-workflow.png) +5. To customize how {% data variables.product.prodname_code_scanning %} scans your code, edit the workflow. + + Generally you can commit the {% data variables.product.prodname_codeql_workflow %} without making any changes to it. However, many of the third-party workflows require additional configuration, so read the comments in the workflow before committing. + + For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)." +6. Use the **Start commit** drop-down, and type a commit message. + ![Start commit](/assets/images/help/repository/start-commit-commit-new-file.png) +7. Choose whether you'd like to commit directly to the default branch, or create a new branch and start a pull request. + ![Choose where to commit](/assets/images/help/repository/start-commit-choose-where-to-commit.png) +8. Click **Commit new file** or **Propose new file**. + +In the default {% data variables.product.prodname_codeql_workflow %}, {% data variables.product.prodname_code_scanning %} is configured to analyze your code each time you either push a change to the default branch or any protected branches, or raise a pull request against the default branch. As a result, {% data variables.product.prodname_code_scanning %} will now commence. + +### Bulk set up of {% data variables.product.prodname_code_scanning %} +You can set up {% data variables.product.prodname_code_scanning %} in many repositories at once using a script. For an example of a script that raises pull requests to add a {% data variables.product.prodname_actions %} workflow to multiple repositories, see the [`jhutchings1/Create-ActionsPRs`](https://github.com/jhutchings1/Create-ActionsPRs) repository. + +### Viewing the logging output from {% data variables.product.prodname_code_scanning %} + +After setting up {% data variables.product.prodname_code_scanning %} for your repository, you can watch the output of the actions as they run. + +{% data reusables.repositories.actions-tab %} + + You'll see a list that includes an entry for running the {% data variables.product.prodname_code_scanning %} workflow. The text of the entry is the title you gave your commit message. + + ![Actions list showing {% data variables.product.prodname_code_scanning %} workflow](/assets/images/help/repository/code-scanning-actions-list.png) + +1. Click the entry for the {% data variables.product.prodname_code_scanning %} workflow. + +1. Click the job name on the left. For example, **Analyze (LANGUAGE)**. + + ![Log output from the {% data variables.product.prodname_code_scanning %} workflow](/assets/images/help/repository/code-scanning-logging-analyze-action.png) + +1. Review the logging output from the actions in this workflow as they run. + +1. Once all jobs are complete, you can view the details of any {% data variables.product.prodname_code_scanning %} alerts that were identified. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." + +{% note %} + +**Note:** If you raised a pull request to add the {% data variables.product.prodname_code_scanning %} workflow to the repository, alerts from that pull request aren't displayed directly on the {% data variables.product.prodname_code_scanning_capc %} page until the pull request is merged. If any alerts were found you can view these, before the pull request is merged, by clicking the **_n_ alerts found** link in the banner on the {% data variables.product.prodname_code_scanning_capc %} page. + + ![Click the "n alerts found" link](/assets/images/help/repository/code-scanning-alerts-found-link.png) + +{% endnote %} + +### Understanding the pull request checks + +Each {% data variables.product.prodname_code_scanning %} workflow you set to run on pull requests always has at least two entries listed in the checks section of a pull request. There is one entry for each of the analysis jobs in the workflow, and a final one for the results of the analysis. + +The names of the {% data variables.product.prodname_code_scanning %} analysis checks take the form: "TOOL NAME / JOB NAME (TRIGGER)." For example, for {% data variables.product.prodname_codeql %}, analysis of C++ code has the entry "{% data variables.product.prodname_codeql %} / Analyze (cpp) (pull_request)." You can click **Details** on a {% data variables.product.prodname_code_scanning %} analysis entry to see logging data. This allows you to debug a problem if the analysis job failed. For example, for {% data variables.product.prodname_code_scanning %} analysis of compiled languages, this can happen if the action can't build the code. + + ![{% data variables.product.prodname_code_scanning %} pull request checks](/assets/images/help/repository/code-scanning-pr-checks.png) + +When the {% data variables.product.prodname_code_scanning %} jobs complete, {% data variables.product.prodname_dotcom %} works out whether any alerts were added by the pull request and adds the "{% data variables.product.prodname_code_scanning_capc %} results / TOOL NAME" entry to the list of checks. After {% data variables.product.prodname_code_scanning %} has been performed at least once, you can click **Details** to view the results of the analysis. If you used a pull request to add {% data variables.product.prodname_code_scanning %} to the repository, you will initially see a "Missing analysis" message when you click **Details** on the "{% data variables.product.prodname_code_scanning_capc %} results / TOOL NAME" check. + + ![Missing analysis for commit message](/assets/images/help/repository/code-scanning-missing-analysis.png) + +#### Reasons for the "missing analysis" message + +After {% data variables.product.prodname_code_scanning %} has analyzed the code in a pull request, it needs to compare the analysis of the topic branch (the branch you used to create the pull request) with the analysis of the base branch (the branch into which you want to merge the pull request). This allows {% data variables.product.prodname_code_scanning %} to compute which alerts are newly introduced by the pull request, which alerts were already present in the base branch, and whether any existing alerts are fixed by the changes in the pull request. Initially, if you use a pull request to add {% data variables.product.prodname_code_scanning %} to a repository, the base branch has not yet been analyzed, so it's not possible to compute these details. In this case, when you click through from the results check on the pull request you will see the "Missing analysis for base commit SHA-HASH" message. + +There are other situations where there may be no analysis for the latest commit to the base branch for a pull request. These include: + +* The pull request has been raised against a branch other than the default branch, and this branch hasn't been analyzed. + + To check whether a branch has been scanned, go to the {% data variables.product.prodname_code_scanning_capc %} page, click the **Branch** drop-down and select the relevant branch. + + ![Choose a branch from the Branch drop-down menu](/assets/images/help/repository/code-scanning-branch-dropdown.png) + + The solution in this situation is to add the name of the base branch to the `on:push` and `on:pull_request` specification in the {% data variables.product.prodname_code_scanning %} workflow on that branch and then make a change that updates the open pull request that you want to scan. + +* The latest commit on the base branch for the pull request is currently being analyzed and analysis is not yet available. + + Wait a few minutes and then push a change to the pull request to retrigger {% data variables.product.prodname_code_scanning %}. + +* An error occurred while analyzing the latest commit on the base branch and analysis for that commit isn't available. + + Merge a trivial change into the base branch to trigger {% data variables.product.prodname_code_scanning %} on this latest commit, then push a change to the pull request to retrigger {% data variables.product.prodname_code_scanning %}. + +### Next steps + +After setting up {% data variables.product.prodname_code_scanning %}, and allowing its actions to complete, you can: + +- View all of the {% data variables.product.prodname_code_scanning %} alerts generated for this repository. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." +- View any alerts generated for a pull request submitted after you set up {% data variables.product.prodname_code_scanning %}. For more information, see "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." +- Set up notifications for completed runs. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#github-actions-notification-options)." +- Investigate any problems that occur with the initial setup of {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}. For more information, see "[Troubleshooting the {% data variables.product.prodname_codeql %} workflow](/code-security/secure-coding/troubleshooting-the-codeql-workflow)." +- Customize how {% data variables.product.prodname_code_scanning %} scans the code in your repository. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)." diff --git a/content/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests.md b/content/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests.md new file mode 100644 index 0000000000..98c646eef3 --- /dev/null +++ b/content/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests.md @@ -0,0 +1,69 @@ +--- +title: Triaging code scanning alerts in pull requests +shortTitle: Triaging alerts in pull requests +intro: 'When {% data variables.product.prodname_code_scanning %} identifies a problem in a pull request, you can review the highlighted code and resolve the alert.' +product: '{% data reusables.gated-features.code-scanning %}' +permissions: 'If you have read permission for a repository, you can see annotations on pull requests. With write permission, you can see detailed information and resolve {% data variables.product.prodname_code_scanning %} alerts for that repository.' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta %} + +### About {% data variables.product.prodname_code_scanning %} results on pull requests + +In repositories where {% data variables.product.prodname_code_scanning %} is configured as a pull request check, {% data variables.product.prodname_code_scanning %} checks the code in the pull request. By default, this is limited to pull requests that target the default branch, but you can change this configuration within {% data variables.product.prodname_actions %} or in a third-party CI/CD system. If merging the changes would introduce new {% data variables.product.prodname_code_scanning %} alerts to the target branch, these are reported as check results in the pull request. The alerts are also shown as annotations in the **Files changed** tab of the pull request. If you have write permission for the repository, you can see any existing {% data variables.product.prodname_code_scanning %} alerts on the **Security** tab. For information about repository alerts, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." + +If {% data variables.product.prodname_code_scanning %} has any results with a severity of `error`, the check fails and the error is reported in the check results. If all the results found by {% data variables.product.prodname_code_scanning %} have lower severities, the alerts are treated as warnings or notices and the check succeeds. If your pull request targets a protected branch that uses {% data variables.product.prodname_code_scanning %}, and the repository owner has configured required status checks, then you must either fix or {% if currentVersion == "enterprise-server@2.22" %}close{% else %}dismiss{% endif %} all error alerts before the pull request can be merged. For more information, see "[About protected branches](/github/administering-a-repository/about-protected-branches#require-status-checks-before-merging)." + +![Failed {% data variables.product.prodname_code_scanning %} check on a pull request](/assets/images/help/repository/code-scanning-check-failure.png) + +### About {% data variables.product.prodname_code_scanning %} as a pull request check + +There are many options for configuring {% data variables.product.prodname_code_scanning %} as a pull request check, so the exact setup of each repository will vary and some will have more than one check. The check that contains the results of {% data variables.product.prodname_code_scanning %} is: **Code scanning results**. + +If the repository uses the {% data variables.product.prodname_codeql_workflow %} a **{% data variables.product.prodname_codeql %} / Analyze (LANGUAGE)** check is run for each language before the results check runs. The analysis check may fail if there are configuration problems, or if the pull request breaks the build for a language that the analysis needs to compile (for example, C/C++, C#, or Java). As with other pull request checks, you can see full details of the check failure on the **Checks** tab. For more information about configuring and troubleshooting, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)" or "[Troubleshooting {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/troubleshooting-the-codeql-workflow)." + +### Triaging an alert on your pull request + +When you look at the **Files changed** tab for a pull request, you see annotations for any lines of code that triggered the alert. + +![Alert annotation within a pull request diff](/assets/images/help/repository/code-scanning-pr-annotation.png) + +If you have write permission for the repository, some annotations contain links with extra context for the alert. In the example above, from {% data variables.product.prodname_codeql %} analysis, you can click **user-provided value** to see where the untrusted data enters the data flow (this is referred to as the source). In this case you can also view the full path from the source to the code that uses the data (the sink) by clicking **Show paths**. This makes it easy to check whether the data is untrusted or if the analysis failed to recognize a data sanitization step between the source and the sink. For information about analyzing data flow using {% data variables.product.prodname_codeql %}, see "[About data flow analysis](https://codeql.github.com/docs/writing-codeql-queries/about-data-flow-analysis/)." + +To see more information about an alert, users with write permission can click the **Show more details** link shown in the annotation. This allows you to see all of the context and metadata provided by the tool in an alert view. In the example below, you can see tags showing the severity, type, and relevant common weakness enumerations (CWEs) for the problem. The view also shows which commit introduced the problem. + +In the detailed view for an alert, some {% data variables.product.prodname_code_scanning %} tools, like {% data variables.product.prodname_codeql %} analysis, also include a description of the problem and a **Show more** link for guidance on how to fix your code. + +![Alert description and link to show more information](/assets/images/help/repository/code-scanning-pr-alert.png) + +### {% if currentVersion == "enterprise-server@2.22" %}Resolving{% else %}Fixing{% endif %} an alert on your pull request + +Anyone with push access to a pull request can fix a {% data variables.product.prodname_code_scanning %} alert that's identified on that pull request. If you commit changes to the pull request this triggers a new run of the pull request checks. If your changes fix the problem, the alert is closed and the annotation removed. + +{% if currentVersion == "enterprise-server@2.22" %} + +If you don't think that an alert needs to be fixed, users with write permission can close the alert manually. {% data reusables.code-scanning.close-alert-examples %} The **Close** button is available in annotations and in the alerts view if you have write permission for the repository. + +{% data reusables.code-scanning.false-positive-fix-codeql %} + +{% else %} + +### Dismissing an alert on your pull request + +An alternative way of closing an alert is to dismiss it. You can dismiss an alert if you don't think it needs to be fixed. {% data reusables.code-scanning.close-alert-examples %} If you have write permission for the repository, the **Dismiss** button is available in code annotations and in the alerts summary. When you click **Dismiss** you will be prompted to choose a reason for closing the alert. + +![Choosing a reason for dismissing an alert](/assets/images/help/repository/code-scanning-alert-close-drop-down.png) + +{% data reusables.code-scanning.choose-alert-dismissal-reason %} + +{% data reusables.code-scanning.false-positive-fix-codeql %} + +For more information about dismissing alerts, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#dismissing-or-deleting-alerts)." + +{% endif %} diff --git a/content/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system.md b/content/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system.md new file mode 100644 index 0000000000..bb65b3ad17 --- /dev/null +++ b/content/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system.md @@ -0,0 +1,58 @@ +--- +title: Troubleshooting CodeQL code scanning in your CI system +shortTitle: Troubleshooting in your CI +intro: 'If you''re having problems with the {% data variables.product.prodname_codeql_runner %}, you can troubleshoot by using these tips.' +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta-codeql-runner %} +{% data reusables.code-scanning.beta %} +{% data reusables.code-scanning.not-available %} + +### The `init` command takes too long + +Before the {% data variables.product.prodname_codeql_runner %} can build and analyze code, it needs access to the {% data variables.product.prodname_codeql %} bundle, which contains the {% data variables.product.prodname_codeql %} CLI and the {% data variables.product.prodname_codeql %} libraries. + +When you use the {% data variables.product.prodname_codeql_runner %} for the first time on your machine, the `init` command downloads the {% data variables.product.prodname_codeql %} bundle to your machine. This download can take a few minutes. +The {% data variables.product.prodname_codeql %} bundle is cached between runs, so if you use the {% data variables.product.prodname_codeql_runner %} again on the same machine, it won't download the {% data variables.product.prodname_codeql %} bundle again. + +To avoid this automatic download, you can manually download the {% data variables.product.prodname_codeql %} bundle to your machine and specify the path using the `--codeql-path` flag of the `init` command. + +### No code found during the build + +If the `analyze` command for the {% data variables.product.prodname_codeql_runner %} fails with an error `No source code was seen during the build`, this indicates that {% data variables.product.prodname_codeql %} was unable to monitor your code. Several reasons can explain such a failure. + +1. Automatic language detection identified a supported language, but there is no analyzable code of that language in the repository. A typical example is when our language detection service finds a file associated with a particular programming language like a `.h`, or `.gyp` file, but no corresponding executable code is present in the repository. To solve the problem, you can manually define the languages you want to analyze by using the `--languages` flag of the `init` command. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system)." + +1. You're analyzing a compiled language without using the `autobuild` command and you run the build steps yourself after the `init` step. For the build to work, you must set up the environment such that the {% data variables.product.prodname_codeql_runner %} can monitor the code. The `init` command generates instructions for how to export the required environment variables, so you can copy and run the script after you've run the `init` command. + - On macOS and Linux: + ```shell + $ . codeql-runner/codeql-env.sh + ``` + - On Windows, using the Command shell (`cmd`) or a batch file (`.bat`): + ```shell + > call codeql-runner\codeql-env.bat + ``` + - On Windows, using PowerShell: + ```shell + > cat codeql-runner\codeql-env.sh | Invoke-Expression + ``` + + The environment variables are also stored in the file `codeql-runner/codeql-env.json`. This file contains a single JSON object which maps environment variable keys to values. If you can't run the script generated by the `init` command, then you can use the data in JSON format instead. + + {% note %} + + **Note:** If you used the `--temp-dir` flag of the `init` command to specify a custom directory for temporary files, the path to the `codeql-env` files might be different. + + {% endnote %} + +1. You're analyzing a compiled language on macOS without using the `autobuild` command and you run the build steps yourself after the `init` step. If SIP (System Integrity Protection) is enabled, which is the default on recent versions of OSX, analysis might fail. To fix this, prefix the build command with the `$CODEQL_RUNNER` environment variable. + For example, if your build command is `cmd arg1 arg2`, you should run `$CODEQL_RUNNER cmd arg1 arg2`. + +1. The code is built in a container or on a separate machine. If you use a containerized build or if you outsource the build to another machine, make sure to run the {% data variables.product.prodname_codeql_runner %} in the container or on the machine where your build task takes place. For more information, see "[Running CodeQL code scanning in a container](/code-security/secure-coding/running-codeql-code-scanning-in-a-container)." diff --git a/content/code-security/secure-coding/troubleshooting-the-codeql-workflow.md b/content/code-security/secure-coding/troubleshooting-the-codeql-workflow.md new file mode 100644 index 0000000000..5183aab02f --- /dev/null +++ b/content/code-security/secure-coding/troubleshooting-the-codeql-workflow.md @@ -0,0 +1,171 @@ +--- +title: Troubleshooting the CodeQL workflow +shortTitle: Troubleshooting CodeQL +intro: 'If you''re having problems with {% data variables.product.prodname_code_scanning %}, you can troubleshoot by using these tips for resolving issues.' +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta %} +{% data reusables.code-scanning.not-available %} + +### Automatic build for a compiled language fails + +If an automatic build of code for a compiled language within your project fails, try the following troubleshooting steps. + +- Remove the `autobuild` step from your {% data variables.product.prodname_code_scanning %} workflow and add specific build steps. For information about editing the workflow, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning#editing-a-code-scanning-workflow)." For more information about replacing the `autobuild` step, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." + +- If your workflow doesn't explicitly specify the languages to analyze, {% data variables.product.prodname_codeql %} implicitly detects the supported languages in your code base. In this configuration, out of the compiled languages C/C++, C#, and Java, {% data variables.product.prodname_codeql %} only analyzes the language with the most source files. Edit the workflow and add a build matrix specifying the languages you want to analyze. The default CodeQL analysis workflow uses such a matrix. + + The following extracts from a workflow show how you can use a matrix within the job strategy to specify languages, and then reference each language within the "Initialize {% data variables.product.prodname_codeql %}" step: + + ```yaml + jobs: + analyze: + ... + strategy: + fail-fast: false + matrix: + language: ['csharp', 'cpp', 'javascript'] + + ... + + - name: Initialize {% data variables.product.prodname_codeql %} + uses: github/codeql-action/init@v1 + with: + languages: {% raw %}${{ matrix.language }}{% endraw %} + ``` + + For more information about editing the workflow, see "[Configuring code scanning](/code-security/secure-coding/configuring-code-scanning)." + +### No code found during the build + +If your workflow fails with an error `No source code was seen during the build` or `The process '/opt/hostedtoolcache/CodeQL/0.0.0-20200630/x64/codeql/codeql' failed with exit code 32`, this indicates that {% data variables.product.prodname_codeql %} was unable to monitor your code. Several reasons can explain such a failure: + +1. Automatic language detection identified a supported language, but there is no analyzable code of that language in the repository. A typical example is when our language detection service finds a file associated with a particular programming language like a `.h`, or `.gyp` file, but no corresponding executable code is present in the repository. To solve the problem, you can manually define the languages you want to analyze by updating the list of languages in the `language` matrix. For example, the following configuration will analyze only Go, and JavaScript. + + ```yaml + strategy: + fail-fast: false + matrix: + # Override automatic language detection by changing the list below + # Supported options are: + # ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] + language: ['go', 'javascript'] + ``` +For more information, see the workflow extract in "[Automatic build for a compiled language fails](#automatic-build-for-a-compiled-language-fails)" above. +1. Your {% data variables.product.prodname_code_scanning %} workflow is analyzing a compiled language (C, C++, C#, or Java), but the code was not compiled. By default, the {% data variables.product.prodname_codeql %} analysis workflow contains an `autobuild` step, however, this step represents a best effort process, and may not succeed in building your code, depending on your specific build environment. Compilation may also fail if you have removed the `autobuild` step and did not include build steps manually. For more information about specifying build steps, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." +1. Your workflow is analyzing a compiled language (C, C++, C#, or Java), but portions of your build are cached to improve performance (most likely to occur with build systems like Gradle or Bazel). Since {% data variables.product.prodname_codeql %} observes the activity of the compiler to understand the data flows in a repository, {% data variables.product.prodname_codeql %} requires a complete build to take place in order to perform analysis. +1. Your workflow is analyzing a compiled language (C, C++, C#, or Java), but compilation does not occur between the `init` and `analyze` steps in the workflow. {% data variables.product.prodname_codeql %} requires that your build happens in between these two steps in order to observe the activity of the compiler and perform analysis. +1. Your compiled code (in C, C++, C#, or Java) was compiled successfully, but {% data variables.product.prodname_codeql %} was unable to detect the compiler invocations. The most common causes are: + + * Running your build process in a separate container to {% data variables.product.prodname_codeql %}. For more information, see "[Running CodeQL code scanning in a container](/code-security/secure-coding/running-codeql-code-scanning-in-a-container)." + * Building using a distributed build system external to GitHub Actions, using a daemon process. + * {% data variables.product.prodname_codeql %} isn't aware of the specific compiler you are using. + + For .NET Framework projects, and for C# projects using either `dotnet build` or `msbuild` that target .NET Core 2, you should specify `/p:UseSharedCompilation=false` in your workflow's `run` step, when you build your code. The `UseSharedCompilation` flag isn't necessary for .NET Core 3.0 and later. + + For example, the following configuration for C# will pass the flag during the first build step. + + ``` yaml + - run: | + dotnet build /p:UseSharedCompilation=false + ``` + + If you encounter another problem with your specific compiler or configuration, contact {% data variables.contact.contact_support %}. + +For more information about specifying build steps, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." + +### Portions of my repository were not analyzed using `autobuild` + +The {% data variables.product.prodname_codeql %} `autobuild` feature uses heuristics to build the code in a repository, however, sometimes this approach results in incomplete analysis of a repository. For example, when multiple `build.sh` commands exist in a single repository, the analysis may not complete since the `autobuild` step will only execute one of the commands. The solution is to replace the `autobuild` step with build steps which build all of the source code which you wish to analyze. For more information, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." + +### The build takes too long + +If your build with {% data variables.product.prodname_codeql %} analysis takes too long to run, there are several approaches you can try to reduce the build time. + +#### Increase the memory or cores + +If you use self-hosted runners to run {% data variables.product.prodname_codeql %} analysis, you can increase the memory or the number of cores on those runners. + +#### Use matrix builds to parallelize the analysis + +The default {% data variables.product.prodname_codeql_workflow %} uses a build matrix of languages, which causes the analysis of each language to run in parallel. If you have specified the languages you want to analyze directly in the "Initialize CodeQL" step, analysis of each language will happen sequentially. To speed up analysis of multiple languages, modify your workflow to use a matrix. For more information, see the workflow extract in "[Automatic build for a compiled language fails](#automatic-build-for-a-compiled-language-fails)" above. + +#### Reduce the amount of code being analyzed in a single workflow + +Analysis time is typically proportional to the amount of code being analyzed. You can reduce the analysis time by reducing the amount of code being analyzed at once, for example, by excluding test code, or breaking analysis into multiple workflows that analyze only a subset of your code at a time. + +For compiled languages like Java, C, C++, and C#, {% data variables.product.prodname_codeql %} analyzes all of the code which was built during the workflow run. To limit the amount of code being analyzed, build only the code which you wish to analyze by specifying your own build steps in a `run` block. You can combine specifying your own build steps with using the `paths` or `paths-ignore` filters on the `pull_request` and `push` events to ensure that your workflow only runs when specific code is changed. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths)." + +For interpreted languages like Go, JavaScript, Python, and TypeScript, that {% data variables.product.prodname_codeql %} analyzes without a specific build, you can specify additional configuration options to limit the amount of code to analyze. For more information, see "[Specifying directories to scan](/code-security/secure-coding/configuring-code-scanning#specifying-directories-to-scan)." + +If you split your analysis into multiple workflows as described above, we still recommend that you have at least one workflow which runs on a `schedule` which analyzes all of the code in your repository. Because {% data variables.product.prodname_codeql %} analyzes data flows between components, some complex security behaviors may only be detected on a complete build. + +#### Run only during a `schedule` event + +If your analysis is still too slow to be run during `push` or `pull_request` events, then you may want to only trigger analysis on the `schedule` event. For more information, see "[Events](/actions/learn-github-actions/introduction-to-github-actions#events)." + +{% if currentVersion == "free-pro-team@latest" %} +### Results differ between analysis platforms + +If you are analyzing code written in Python, you may see different results depending on whether you run the {% data variables.product.prodname_codeql_workflow %} on Linux, macOS, or Windows. + +On GitHub-hosted runners that use Linux, the {% data variables.product.prodname_codeql_workflow %} tries to install and analyze Python dependencies, which could lead to more results. To disable the auto-install, add `setup-python-dependencies: false` to the "Initialize CodeQL" step of the workflow. For more information about configuring the analysis of Python dependencies, see "[Analyzing Python dependencies](/code-security/secure-coding/configuring-code-scanning#analyzing-python-dependencies)." + +{% endif %} + +### Error: "Server error" + +If the run of a workflow for {% data variables.product.prodname_code_scanning %} fails due to a server error, try running the workflow again. If the problem persists, contact {% data variables.contact.contact_support %}. + +### Error: "Out of disk" or "Out of memory" + +On very large projects, {% data variables.product.prodname_codeql %} may run out of disk or memory on the runner. +{% if currentVersion == "free-pro-team@latest" %}If you encounter this issue on a hosted {% data variables.product.prodname_actions %} runner, contact {% data variables.contact.contact_support %} so that we can investigate the problem. +{% else %}If you encounter this issue, try increasing the memory on the runner.{% endif %} + +### Warning: "git checkout HEAD^2 is no longer necessary" + +If you're using an old {% data variables.product.prodname_codeql %} workflow you may get the following warning in the output from the "Initialize {% data variables.product.prodname_codeql %}" action: + +``` +Warning: 1 issue was detected with this workflow: git checkout HEAD^2 is no longer +necessary. Please remove this step as Code Scanning recommends analyzing the merge +commit for best results. +``` + +Fix this by removing the following lines from the {% data variables.product.prodname_codeql %} workflow. These lines were included in the `steps` section of the `Analyze` job in initial versions of the {% data variables.product.prodname_codeql %} workflow. + +```yaml + with: + # We must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head. + fetch-depth: 2 + + # If this run was triggered by a pull request event, then checkout + # the head of the pull request instead of the merge commit. + - run: git checkout HEAD^2 + if: {% raw %}${{ github.event_name == 'pull_request' }}{% endraw %} +``` + +The revised `steps` section of the workflow will look like this: + +```yaml + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the {% data variables.product.prodname_codeql %} tools for scanning. + - name: Initialize {% data variables.product.prodname_codeql %} + uses: github/codeql-action/init@v1 + + ... +``` + +For more information about editing the {% data variables.product.prodname_codeql %} workflow file, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning#editing-a-code-scanning-workflow)." \ No newline at end of file diff --git a/content/code-security/secure-coding/uploading-a-sarif-file-to-github.md b/content/code-security/secure-coding/uploading-a-sarif-file-to-github.md new file mode 100644 index 0000000000..0dfdbb65ee --- /dev/null +++ b/content/code-security/secure-coding/uploading-a-sarif-file-to-github.md @@ -0,0 +1,119 @@ +--- +title: Uploading a SARIF file to GitHub +shortTitle: Uploading a SARIF file +intro: '{% data reusables.code-scanning.you-can-upload-third-party-analysis %}' +permissions: 'People with write permissions to a repository can upload {% data variables.product.prodname_code_scanning %} data generated outside {% data variables.product.prodname_dotcom %}.' +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + +{% data reusables.code-scanning.beta %} +{% data reusables.code-scanning.enterprise-enable-code-scanning %} + +### About SARIF file uploads for {% data variables.product.prodname_code_scanning %} + +{% data variables.product.prodname_dotcom %} creates {% data variables.product.prodname_code_scanning %} alerts in a repository using information from Static Analysis Results Interchange Format (SARIF) files. SARIF files can be uploaded to a repository using the API or {% data variables.product.prodname_actions %}. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." + +You can generate SARIF files using many static analysis security testing tools, including {% data variables.product.prodname_codeql %}. The results must use SARIF version 2.1.0. For more information, see "[About SARIF support for {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/sarif-support-for-code-scanning)." + +You can upload the results using {% data variables.product.prodname_actions %}{% if currentVersion == "enterprise-server@2.22" %} (available if your organization is taking part in the beta program){% endif %}, the {% data variables.product.prodname_code_scanning %} API, or the {% data variables.product.prodname_codeql_runner %}. The best upload method will depend on how you generate the SARIF file, for example, if you use: + +- {% data variables.product.prodname_actions %} to run the {% data variables.product.prodname_codeql %} action, there is no further action required. The {% data variables.product.prodname_codeql %} action uploads the SARIF file automatically when it completes analysis. +- {% data variables.product.prodname_actions %} to run a SARIF-compatible analysis tool, you could update the workflow to include a final step that uploads the results (see below). +- The {% data variables.product.prodname_codeql_runner %}, to run {% data variables.product.prodname_code_scanning %} in your CI system, by default the runner automatically uploads results to {% data variables.product.prodname_dotcom %} on completion. If you block the automatic upload, when you are ready to upload results you can use the `upload` command (for more information, see "[Running {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)"). +- A tool that generates results as an artifact outside of your repository, you can use the {% data variables.product.prodname_code_scanning %} API to upload the file (for more information, see "[Upload an analysis as SARIF data](/rest/reference/code-scanning#upload-an-analysis-as-sarif-data)"). + +{% data reusables.code-scanning.not-available %} + +### Uploading a {% data variables.product.prodname_code_scanning %} analysis with {% data variables.product.prodname_actions %} + +To use {% data variables.product.prodname_actions %} to upload a third-party SARIF file to a repository, you'll need a workflow. For more information, see "[Learn {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/about-github-actions)" and "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." + +Your workflow will need to use the `upload-sarif` action, which is part of the `github/codeql-action` repository. It has input parameters that you can use to configure the upload. The main input parameter you'll use is `sarif-file`, which configures the file or directory of SARIF files to be uploaded. The directory or file path is relative to the root of the repository. For more information see the [`upload-sarif` action](https://github.com/github/codeql-action/tree/HEAD/upload-sarif). + +The `upload-sarif` action can be configured to run when the `push` and `scheduled` event occur. For more information about {% data variables.product.prodname_actions %} events, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." + +If your SARIF file doesn't include `partialFingerprints`, the `upload-sarif` action will calculate the `partialFingerprints` field for you and attempt to prevent duplicate alerts. {% data variables.product.prodname_dotcom %} can only create `partialFingerprints` when the repository contains both the SARIF file and the source code used in the static analysis. For more information about preventing duplicate alerts, see "[About SARIF support for code scanning](/code-security/secure-coding/sarif-support-for-code-scanning#preventing-duplicate-alerts-using-fingerprints)." + +{% data reusables.code-scanning.upload-sarif-alert-limit %} + +#### Example workflow for SARIF files generated outside of a repository + +You can create a new workflow that uploads SARIF files after you commit them to your repository. This is useful when the SARIF file is generated as an artifact outside of your repository. + +This example workflow runs anytime commits are pushed to the repository. The action uses the `partialFingerprints` property to determine if changes have occurred. In addition to running when commits are pushed, the workflow is scheduled to run once per week. For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." + +This workflow uploads the `results.sarif` file located in the root of the repository. For more information about creating a workflow file, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." + +Alternatively, you could modify this workflow to upload a directory of SARIF files. For example, you could place all SARIF files in a directory in the root of your repository called `sarif-output` and set the action's input parameter `sarif_file` to `sarif-output`. + +```yaml +name: "Upload SARIF" + +# Run workflow each time code is pushed to your repository and on a schedule. +# The scheduled workflow runs every at 00:00 on Sunday UTC time. +on: + push: + schedule: + - cron: '0 0 * * 0' + +jobs: + build: + runs-on: ubuntu-latest + steps: + # This step checks out a copy of your repository. + - name: Checkout repository + uses: actions/checkout@v2 + - name: Upload SARIF file + uses: github/codeql-action/upload-sarif@v1 + with: + # Path to SARIF file relative to the root of the repository + sarif_file: results.sarif +``` + +#### Example workflow that runs the ESLint analysis tool + +If you generate your third-party SARIF file as part of a continuous integration (CI) workflow, you can add the `upload-sarif` action as a step after running your CI tests. If you don't already have a CI workflow, you can create one using a {% data variables.product.prodname_actions %} template. For more information, see the "[{% data variables.product.prodname_actions %} quickstart](/actions/quickstart)." + +This example workflow runs anytime commits are pushed to the repository. The action uses the `partialFingerprints` property to determine if changes have occurred. In addition to running when commits are pushed, the workflow is scheduled to run once per week. For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." + +The workflow shows an example of running the ESLint static analysis tool as a step in a workflow. The `Run ESLint` step runs the ESLint tool and outputs the `results.sarif` file. The workflow then uploads the `results.sarif` file to {% data variables.product.prodname_dotcom %} using the `upload-sarif` action. For more information about creating a workflow file, see "[Introduction to GitHub Actions](/actions/learn-github-actions/introduction-to-github-actions)." + +```yml +name: "ESLint analysis" + +# Run workflow each time code is pushed to your repository and on a schedule. +# The scheduled workflow runs every at 00:00 on Sunday UTC time. +on: + push: + schedule: + - cron: '0 0 * * 0' + +jobs: + build: + steps: + - uses: actions/checkout@v2 + - name: Run npm install + run: npm install + # Runs the ESlint code analysis + - name: Run ESLint + # eslint exits 1 if it finds anything to report + run: node_modules/.bin/eslint build docs lib script spec-main -f node_modules/@microsoft/eslint-formatter-sarif/sarif.js -o results.sarif || true + # Uploads results.sarif to GitHub repository using the upload-sarif action + - uses: github/codeql-action/upload-sarif@v1 + with: + # Path to SARIF file relative to the root of the repository + sarif_file: results.sarif +``` + +### Further reading + +- "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions)" +- "[Viewing your workflow history](/actions/managing-workflow-runs/viewing-workflow-run-history)" +- "[Running {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)" +- "[Upload an analysis as SARIF data](/rest/reference/code-scanning#upload-an-analysis-as-sarif-data)" diff --git a/content/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system.md b/content/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system.md new file mode 100644 index 0000000000..2779c1d3a4 --- /dev/null +++ b/content/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system.md @@ -0,0 +1,14 @@ +--- +title: Using CodeQL code scanning with your existing CI system +shortTitle: CodeQL CI system support +intro: 'The {% data variables.product.prodname_codeql_runner %} allows you to use your existing CI system to run {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}.' +mapTopic: true +product: '{% data reusables.gated-features.code-scanning %}' +redirect_from: + - /github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' + github-ae: '*' +--- + diff --git a/content/github/managing-security-vulnerabilities/about-github-security-advisories.md b/content/code-security/security-advisories/about-github-security-advisories.md similarity index 97% rename from content/github/managing-security-vulnerabilities/about-github-security-advisories.md rename to content/code-security/security-advisories/about-github-security-advisories.md index f1c2841e3b..d9328c974a 100644 --- a/content/github/managing-security-vulnerabilities/about-github-security-advisories.md +++ b/content/code-security/security-advisories/about-github-security-advisories.md @@ -4,6 +4,7 @@ intro: 'You can use {% data variables.product.prodname_security_advisories %} to redirect_from: - /articles/about-maintainer-security-advisories - /github/managing-security-vulnerabilities/about-maintainer-security-advisories + - /github/managing-security-vulnerabilities/about-github-security-advisories versions: free-pro-team: '*' --- diff --git a/content/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory.md b/content/code-security/security-advisories/adding-a-collaborator-to-a-security-advisory.md similarity index 96% rename from content/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory.md rename to content/code-security/security-advisories/adding-a-collaborator-to-a-security-advisory.md index c182035648..8baf65648a 100644 --- a/content/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory.md +++ b/content/code-security/security-advisories/adding-a-collaborator-to-a-security-advisory.md @@ -4,6 +4,7 @@ intro: You can add other users or teams to collaborate on a security advisory wi redirect_from: - /articles/adding-a-collaborator-to-a-maintainer-security-advisory - /github/managing-security-vulnerabilities/adding-a-collaborator-to-a-maintainer-security-advisory + - /github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory versions: free-pro-team: '*' --- diff --git a/content/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository.md b/content/code-security/security-advisories/adding-a-security-policy-to-your-repository.md similarity index 96% rename from content/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository.md rename to content/code-security/security-advisories/adding-a-security-policy-to-your-repository.md index 874073caaa..18fb6258fc 100644 --- a/content/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository.md +++ b/content/code-security/security-advisories/adding-a-security-policy-to-your-repository.md @@ -3,6 +3,7 @@ title: Adding a security policy to your repository intro: You can give instructions for how to responsibly report a security vulnerability in your project by adding a security policy to your repository. redirect_from: - /articles/adding-a-security-policy-to-your-repository + - /github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository versions: free-pro-team: '*' --- diff --git a/content/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md b/content/code-security/security-advisories/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md similarity index 97% rename from content/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md rename to content/code-security/security-advisories/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md index fb5e8e5a95..fa18318950 100644 --- a/content/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md +++ b/content/code-security/security-advisories/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md @@ -3,6 +3,7 @@ title: Collaborating in a temporary private fork to resolve a security vulnerabi intro: You can create a temporary private fork to privately collaborate on fixing a security vulnerability in your repository. redirect_from: - /articles/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability + - /github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability versions: free-pro-team: '*' --- diff --git a/content/github/managing-security-vulnerabilities/creating-a-security-advisory.md b/content/code-security/security-advisories/creating-a-security-advisory.md similarity index 97% rename from content/github/managing-security-vulnerabilities/creating-a-security-advisory.md rename to content/code-security/security-advisories/creating-a-security-advisory.md index fd713c6afb..5ded44d6c0 100644 --- a/content/github/managing-security-vulnerabilities/creating-a-security-advisory.md +++ b/content/code-security/security-advisories/creating-a-security-advisory.md @@ -4,6 +4,7 @@ intro: You can create a draft security advisory to privately discuss and fix a s redirect_from: - /articles/creating-a-maintainer-security-advisory - /github/managing-security-vulnerabilities/creating-a-maintainer-security-advisory + - /github/managing-security-vulnerabilities/creating-a-security-advisory versions: free-pro-team: '*' --- diff --git a/content/github/managing-security-vulnerabilities/editing-a-security-advisory.md b/content/code-security/security-advisories/editing-a-security-advisory.md similarity index 95% rename from content/github/managing-security-vulnerabilities/editing-a-security-advisory.md rename to content/code-security/security-advisories/editing-a-security-advisory.md index d2914ae576..a2ab12e8c7 100644 --- a/content/github/managing-security-vulnerabilities/editing-a-security-advisory.md +++ b/content/code-security/security-advisories/editing-a-security-advisory.md @@ -1,6 +1,8 @@ --- title: Editing a security advisory intro: You can edit the metadata and description for a security advisory if you need to update details or correct errors. +redirect_from: + - /github/managing-security-vulnerabilities/editing-a-security-advisory versions: free-pro-team: '*' --- diff --git a/content/code-security/security-advisories/index.md b/content/code-security/security-advisories/index.md new file mode 100644 index 0000000000..c225614f7b --- /dev/null +++ b/content/code-security/security-advisories/index.md @@ -0,0 +1,23 @@ +--- +title: Managing security advisories for vulnerabilities in your project +shortTitle: Security advisories +intro: 'Discuss, fix, and disclose security vulnerabilities in your repositories using security advisories.' +redirect_from: + - /articles/managing-security-vulnerabilities-in-your-project + - /github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project +versions: + free-pro-team: '*' +--- + +### Table of Contents + +{% link_in_list /adding-a-security-policy-to-your-repository %} +{% link_in_list /about-github-security-advisories %} +{% link_in_list /permission-levels-for-security-advisories %} +{% link_in_list /creating-a-security-advisory %} +{% link_in_list /adding-a-collaborator-to-a-security-advisory %} +{% link_in_list /removing-a-collaborator-from-a-security-advisory %} +{% link_in_list /collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability %} +{% link_in_list /publishing-a-security-advisory %} +{% link_in_list /editing-a-security-advisory %} +{% link_in_list /withdrawing-a-security-advisory %} \ No newline at end of file diff --git a/content/github/managing-security-vulnerabilities/permission-levels-for-security-advisories.md b/content/code-security/security-advisories/permission-levels-for-security-advisories.md similarity index 97% rename from content/github/managing-security-vulnerabilities/permission-levels-for-security-advisories.md rename to content/code-security/security-advisories/permission-levels-for-security-advisories.md index a69030e7e2..76fdc17f32 100644 --- a/content/github/managing-security-vulnerabilities/permission-levels-for-security-advisories.md +++ b/content/code-security/security-advisories/permission-levels-for-security-advisories.md @@ -4,6 +4,7 @@ intro: The actions you can take in a security advisory depend on whether you hav redirect_from: - /articles/permission-levels-for-maintainer-security-advisories - /github/managing-security-vulnerabilities/permission-levels-for-maintainer-security-advisories + - /github/managing-security-vulnerabilities/permission-levels-for-security-advisories versions: free-pro-team: '*' --- diff --git a/content/github/managing-security-vulnerabilities/publishing-a-security-advisory.md b/content/code-security/security-advisories/publishing-a-security-advisory.md similarity index 96% rename from content/github/managing-security-vulnerabilities/publishing-a-security-advisory.md rename to content/code-security/security-advisories/publishing-a-security-advisory.md index cde49eaca0..919a3c3c0e 100644 --- a/content/github/managing-security-vulnerabilities/publishing-a-security-advisory.md +++ b/content/code-security/security-advisories/publishing-a-security-advisory.md @@ -4,9 +4,11 @@ intro: You can publish a security advisory to alert your community about a secur redirect_from: - /articles/publishing-a-maintainer-security-advisory - /github/managing-security-vulnerabilities/publishing-a-maintainer-security-advisory + - /github/managing-security-vulnerabilities/publishing-a-security-advisory versions: free-pro-team: '*' --- + Anyone with admin permissions to a security advisory can publish the security advisory. diff --git a/content/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory.md b/content/code-security/security-advisories/removing-a-collaborator-from-a-security-advisory.md similarity index 93% rename from content/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory.md rename to content/code-security/security-advisories/removing-a-collaborator-from-a-security-advisory.md index ff06ba0cb0..3fcef6e126 100644 --- a/content/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory.md +++ b/content/code-security/security-advisories/removing-a-collaborator-from-a-security-advisory.md @@ -1,6 +1,8 @@ --- title: Removing a collaborator from a security advisory intro: 'When you remove a collaborator from a security advisory, they lose read and write access to the security advisory''s discussion and metadata.' +redirect_from: + - /github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory versions: free-pro-team: '*' --- diff --git a/content/github/managing-security-vulnerabilities/withdrawing-a-security-advisory.md b/content/code-security/security-advisories/withdrawing-a-security-advisory.md similarity index 81% rename from content/github/managing-security-vulnerabilities/withdrawing-a-security-advisory.md rename to content/code-security/security-advisories/withdrawing-a-security-advisory.md index 90e0dd0d99..7c01ecb95a 100644 --- a/content/github/managing-security-vulnerabilities/withdrawing-a-security-advisory.md +++ b/content/code-security/security-advisories/withdrawing-a-security-advisory.md @@ -1,6 +1,8 @@ --- title: Withdrawing a security advisory intro: You can withdraw a security advisory that you've published. +redirect_from: + - /github/managing-security-vulnerabilities/withdrawing-a-security-advisory versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies.md b/content/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies.md new file mode 100644 index 0000000000..61851a2d19 --- /dev/null +++ b/content/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies.md @@ -0,0 +1,96 @@ +--- +title: About alerts for vulnerable dependencies +intro: '{% data variables.product.product_name %} sends {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} when we detect vulnerabilities affecting your repository.' +redirect_from: + - /github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' +--- + + +### About vulnerable dependencies + +{% data reusables.repositories.a-vulnerability-is %} + +When your code depends on a package that has a security vulnerability, this vulnerable dependency can cause a range of problems for your project or the people who use it. + +### Detection of vulnerable dependencies + + {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %} detects vulnerable dependencies and sends {% data variables.product.prodname_dependabot_alerts %}{% else %}{% data variables.product.product_name %} detects vulnerable dependencies and sends security alerts{% endif %} when: + +{% if currentVersion == "free-pro-team@latest" %} +- A new vulnerability is added to the {% data variables.product.prodname_advisory_database %}. For more information, see "[Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}](/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database)." +- New vulnerability data from [WhiteSource](https://www.whitesourcesoftware.com/vulnerability-database) is processed.{% else %} +- New advisory data is synchronized to {% data variables.product.prodname_ghe_server %} each hour from {% data variables.product.prodname_dotcom_the_website %}. For more information about advisory data, see "Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}."{% endif %} +- The dependency graph for a repository changes. For example, when a contributor pushes a commit to change the packages or versions it depends on{% if currentVersion == "free-pro-team@latest" %}, or when the code of one of the dependencies changes{% endif %}. For more information, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." + +{% data reusables.repositories.dependency-review %} + +For a list of the ecosystems that {% data variables.product.product_name %} can detect vulnerabilities and dependencies for, see "[Supported package ecosystems](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)." + +{% note %} + +**Note:** It is important to keep your manifest and lock files up to date. If the dependency graph doesn't accurately reflect your current dependencies and versions, then you could miss alerts for vulnerable dependencies that you use. You may also get alerts for dependencies that you no longer use. + +{% endnote %} + +{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" % %} +### {% data variables.product.prodname_dependabot %} alerts for vulnerable dependencies +{% else %} +### Security alerts for vulnerable dependencies +{% endif %} + +{% data reusables.repositories.enable-security-alerts %} + +{% if currentVersion == "free-pro-team@latest" %}{% data variables.product.prodname_dotcom %} detects vulnerable dependencies in _public_ repositories and generates {% data variables.product.prodname_dependabot_alerts %} by default. Owners of private repositories, or people with admin access, can enable {% data variables.product.prodname_dependabot_alerts %} by enabling the dependency graph and {% data variables.product.prodname_dependabot_alerts %} for their repositories. + +You can also enable or disable {% data variables.product.prodname_dependabot_alerts %} for all repositories owned by your user account or organization. For more information, see "[Managing security and analysis settings for your user account](/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account)" or "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)." + +For information about permission requirements for actions related to {% data variables.product.prodname_dependabot_alerts %}, see "[Repository permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-requirements-for-security-features)." + +{% data variables.product.product_name %} starts generating the dependency graph immediately and generates alerts for any vulnerable dependencies as soon as they are identified. The graph is usually populated within minutes but this may take longer for repositories with many dependencies. For more information, see "[Managing data use settings for your private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository)." +{% endif %} + +{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} +When {% data variables.product.product_name %} identifies a vulnerable dependency, we generate a {% data variables.product.prodname_dependabot %} alert and display it on the Security tab for the repository. The alert includes a link to the affected file in the project, and information about a fixed version. {% data variables.product.product_name %} also notifies the maintainers of affected repositories about the new alert according to their notification preferences. For more information, see "[Configuring notifications for vulnerable dependencies](/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies)." +{% endif %} + +{% if currentVersion == "free-pro-team@latest" %} +For repositories where {% data variables.product.prodname_dependabot_security_updates %} are enabled, the alert may also contain a link to a pull request to update the manifest or lock file to the minimum version that resolves the vulnerability. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)." +{% endif %} + +{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} +When {% data variables.product.product_name %} identifies a vulnerable dependency, we send a security alert to the maintainers of affected repositories with details of the vulnerability, a link to the affected file in the project, and information about a fixed version. +{% endif %} + +{% warning %} + +**Note**: {% data variables.product.product_name %}'s security features do not claim to catch all vulnerabilities. Though we are always trying to update our vulnerability database and generate alerts with our most up-to-date information, we will not be able to catch everything or tell you about known vulnerabilities within a guaranteed time frame. These features are not substitutes for human review of each dependency for potential vulnerabilities or any other issues, and we recommend consulting with a security service or conducting a thorough vulnerability review when necessary. + +{% endwarning %} + +### Access to {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %}{% else %}security{% endif %} alerts + +You can see all of the alerts that affect a particular project{% if currentVersion == "free-pro-team@latest" %} on the repository's Security tab or{% endif %} in the repository's dependency graph.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)."{% endif %} + +{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} +By default, we notify people with admin permissions in the affected repositories about new {% data variables.product.prodname_dependabot_alerts %}.{% endif %} {% if currentVersion == "free-pro-team@latest" %}{% data variables.product.product_name %} never publicly discloses identified vulnerabilities for any repository. You can also make {% data variables.product.prodname_dependabot_alerts %} visible to additional people or teams working repositories that you own or have admin permissions for. For more information, see "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-security-alerts)." +{% endif %} + +{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} +We send security alerts to people with admin permissions in the affected repositories by default. {% data variables.product.product_name %} never publicly discloses identified vulnerabilities for any repository. +{% endif %} + +{% data reusables.notifications.vulnerable-dependency-notification-delivery-method-customization %}{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.21" %} For more information, see "[Choosing the delivery method for your notifications](/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications)."{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} For more information, see "[Configuring notifications for vulnerable dependencies](/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies)."{% endif %} + +{% if currentVersion == "free-pro-team@latest" %} +You can also see all the {% data variables.product.prodname_dependabot_alerts %} that correspond to a particular vulnerability in the {% data variables.product.prodname_advisory_database %}. For more information, see "[Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}](/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database#viewing-your-vulnerable-repositories)." +{% endif %} + +{% if currentVersion == "free-pro-team@latest" %} +### Further reading + +- "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)" +- "[Viewing and updating vulnerable dependencies in your repository](/articles/viewing-and-updating-vulnerable-dependencies-in-your-repository)" +- "[Understanding how {% data variables.product.product_name %} uses and protects your data](/categories/understanding-how-github-uses-and-protects-your-data)"{% endif %} diff --git a/content/github/managing-security-vulnerabilities/about-dependabot-security-updates.md b/content/code-security/supply-chain-security/about-dependabot-security-updates.md similarity index 91% rename from content/github/managing-security-vulnerabilities/about-dependabot-security-updates.md rename to content/code-security/supply-chain-security/about-dependabot-security-updates.md index 932ce92e86..b5478e8e82 100644 --- a/content/github/managing-security-vulnerabilities/about-dependabot-security-updates.md +++ b/content/code-security/supply-chain-security/about-dependabot-security-updates.md @@ -4,13 +4,15 @@ intro: '{% data variables.product.prodname_dependabot %} can fix vulnerable depe shortTitle: About Dependabot security updates redirect_from: - /github/managing-security-vulnerabilities/about-github-dependabot-security-updates + - /github/managing-security-vulnerabilities/about-dependabot-security-updates versions: free-pro-team: '*' --- + ### About {% data variables.product.prodname_dependabot_security_updates %} -{% data variables.product.prodname_dependabot_security_updates %} make it easier for you to fix vulnerable dependencies in your repository. If you enable this feature, when a {% data variables.product.prodname_dependabot %} alert is raised for a vulnerable dependency in the dependency graph of your repository, {% data variables.product.prodname_dependabot %} automatically tries to fix it. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" and "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-dependabot-security-updates)." +{% data variables.product.prodname_dependabot_security_updates %} make it easier for you to fix vulnerable dependencies in your repository. If you enable this feature, when a {% data variables.product.prodname_dependabot %} alert is raised for a vulnerable dependency in the dependency graph of your repository, {% data variables.product.prodname_dependabot %} automatically tries to fix it. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)" and "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-dependabot-security-updates)." {% data variables.product.prodname_dependabot %} checks whether it's possible to upgrade the vulnerable dependency to a fixed version without disrupting the dependency graph for the repository. Then {% data variables.product.prodname_dependabot %} raises a pull request to update the dependency to the minimum version that includes the patch and links the pull request to the {% data variables.product.prodname_dependabot %} alert, or reports an error on the alert. For more information, see "[Troubleshooting {% data variables.product.prodname_dependabot %} errors](/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors)." diff --git a/content/github/administering-a-repository/about-dependabot-version-updates.md b/content/code-security/supply-chain-security/about-dependabot-version-updates.md similarity index 98% rename from content/github/administering-a-repository/about-dependabot-version-updates.md rename to content/code-security/supply-chain-security/about-dependabot-version-updates.md index 70156ab2c9..a8c0dcbc91 100644 --- a/content/github/administering-a-repository/about-dependabot-version-updates.md +++ b/content/code-security/supply-chain-security/about-dependabot-version-updates.md @@ -5,6 +5,7 @@ redirect_from: - /github/administering-a-repository/about-dependabot - /github/administering-a-repository/about-github-dependabot - /github/administering-a-repository/about-github-dependabot-version-updates + - /github/administering-a-repository/about-dependabot-version-updates versions: free-pro-team: '*' diff --git a/content/github/managing-security-vulnerabilities/about-managing-vulnerable-dependencies.md b/content/code-security/supply-chain-security/about-managing-vulnerable-dependencies.md similarity index 90% rename from content/github/managing-security-vulnerabilities/about-managing-vulnerable-dependencies.md rename to content/code-security/supply-chain-security/about-managing-vulnerable-dependencies.md index 9041daa8de..52c69ae572 100644 --- a/content/github/managing-security-vulnerabilities/about-managing-vulnerable-dependencies.md +++ b/content/code-security/supply-chain-security/about-managing-vulnerable-dependencies.md @@ -1,9 +1,12 @@ --- title: About managing vulnerable dependencies intro: '{% data variables.product.prodname_dotcom %} helps you to avoid using third-party software that contains known vulnerabilities.' +redirect_from: + - /github/managing-security-vulnerabilities/about-managing-vulnerable-dependencies versions: free-pro-team: '*' --- + {% data variables.product.prodname_dotcom %} provides the following tools for removing and avoiding vulnerable dependencies. @@ -15,7 +18,7 @@ For more information, see "[About the dependency graph](/github/visualizing-repo By checking the dependency reviews on pull requests you can avoid introducing vulnerabilities from dependencies into your codebase. If the pull requests adds a vulnerable dependency, or changes a dependency to a vulnerable version, this is highlighted in the dependency review. You can change the dependency to a patched version before merging the pull request. For more information, see "[Reviewing dependency changes in a pull request](/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request)." #### {% data variables.product.prodname_dependabot_alerts %} -{% data variables.product.prodname_dotcom %} can create {% data variables.product.prodname_dependabot_alerts %} when it detects vulnerable dependencies in your repository. The alert is displayed on the Security tab for the repository. The alert includes a link to the affected file in the project, and information about a fixed version. {% data variables.product.prodname_dotcom %} also notifies the maintainers of the repository, according to their notification preferences. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." +{% data variables.product.prodname_dotcom %} can create {% data variables.product.prodname_dependabot_alerts %} when it detects vulnerable dependencies in your repository. The alert is displayed on the Security tab for the repository. The alert includes a link to the affected file in the project, and information about a fixed version. {% data variables.product.prodname_dotcom %} also notifies the maintainers of the repository, according to their notification preferences. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)." #### {% data variables.product.prodname_dependabot_security_updates %} When {% data variables.product.prodname_dotcom %} generates a {% data variables.product.prodname_dependabot %} alert for a vulnerable dependency in your repository, {% data variables.product.prodname_dependabot %} can automatically try to fix it for you. {% data variables.product.prodname_dependabot_security_updates %} are automatically generated pull requests that update a vulnerable dependency to a fixed version. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)." diff --git a/content/code-security/supply-chain-security/about-the-dependency-graph.md b/content/code-security/supply-chain-security/about-the-dependency-graph.md new file mode 100644 index 0000000000..0c8c22fb3f --- /dev/null +++ b/content/code-security/supply-chain-security/about-the-dependency-graph.md @@ -0,0 +1,92 @@ +--- +title: About the dependency graph +intro: 'You can use the dependency graph to identify all your project''s dependencies. The dependency graph supports a range of popular package ecosystems.' +redirect_from: + - /github/visualizing-repository-data-with-graphs/about-the-dependency-graph +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' +--- + + +### Dependency graph availability + +The dependency graph is available for every{% if currentVersion == "free-pro-team@latest" %} public{% endif %} repository that defines dependencies in a supported package ecosystem using a supported file format.{% if currentVersion == "free-pro-team@latest" %} Repository administrators can also set up the dependency graph for private repositories.{% endif %} + +{% data reusables.repositories.enable-security-alerts %} + +### About the dependency graph + +The dependency graph is a summary of the manifest and lock files stored in a repository. For each repository, it shows{% if currentVersion == "free-pro-team@latest" %}: + +- Dependencies, the ecosystems and packages it depends on +- Dependents, the repositories and packages that depend on it{% else %} dependencies, that is, the ecosystems and packages it depends on. {% data variables.product.prodname_ghe_server %} does not calculate information about dependents, the repositories and packages that depend on a repository.{% endif %} + +When you push a commit to {% data variables.product.product_name %} that changes or adds a supported manifest or lock file to the default branch, the dependency graph is automatically updated.{% if currentVersion == "free-pro-team@latest" %} In addition, the graph is updated when anyone pushes a change to the repository of one of your dependencies.{% endif %} For information on the supported ecosystems and manifest files, see "[Supported package ecosystems](#supported-package-ecosystems)" below. + +{% if currentVersion == "free-pro-team@latest" %} +When you create a pull request containing changes to dependencies that targets the default branch, {% data variables.product.prodname_dotcom %} uses the dependency graph to add dependency reviews to the pull request. These indicate whether the dependencies contain vulnerabilities and, if so, the version of the dependency in which the vulnerability was fixed. For more information, see "[Reviewing dependency changes in a pull request](/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request)." +{% endif %} + +### Dependencies included + +The dependency graph includes all the dependencies of a repository that are detailed in the manifest and lock files, or their equivalent, for supported ecosystems. This includes: + +- Direct dependencies, that are explicitly defined in a manifest or lock file +- Indirect dependencies of these direct dependencies, also known as transitive dependencies or sub-dependencies + +The dependency graph identifies indirect dependencies{% if currentVersion == "free-pro-team@latest" %} either explicitly from a lock file or by checking the dependencies of your direct dependencies. For the most reliable graph, you should use lock files (or their equivalent) because they define exactly which versions of the direct and indirect dependencies you currently use. If you use lock files, you also ensure that all contributors to the repository are using the same versions, which will make it easier for you to test and debug code{% else %} from the lock files{% endif %}. + +{% if currentVersion == "free-pro-team@latest" %} +### Dependents included + +For public repositories, only public repositories that depend on it or on packages that it publishes are reported. This information is not reported for private repositories.{% endif %} + +### Using the dependency graph + +You can use the dependency graph to: + +- Explore the repositories your code depends on{% if currentVersion == "free-pro-team@latest" %}, and those that depend on it{% endif %}. For more information, see "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)." {% if currentVersion == "free-pro-team@latest" %} +- View a summary of the dependencies used in your organization's repositories in a single dashboard. For more information, see "[Viewing insights for your organization](/articles/viewing-insights-for-your-organization#viewing-organization-dependency-insights)."{% endif %} +- View and update vulnerable dependencies for your repository. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)."{% if currentVersion == "free-pro-team@latest" %} +- See information about vulnerable dependencies in pull requests. For more information, see "[Reviewing dependency changes in a pull request](/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request)."{% endif %} + +### Enabling the dependency graph + +{% if currentVersion == "free-pro-team@latest" %}To generate a dependency graph, {% data variables.product.product_name %} needs read-only access to the dependency manifest and lock files for a repository. The dependency graph is automatically generated for all public repositories and you can choose to enable it for private repositories. For information about enabling or disabling it for private repositories, see "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)."{% endif %} + +{% if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21" %}If the dependency graph is not available in your system, your site administrator can enable the dependency graph and {% data variables.product.prodname_dependabot_alerts %}. For more information, see "[Enabling alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} + +{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} If the dependency graph is not available in your system, your site administrator can enable the dependency graph and security alerts. For more information, see "[Enabling alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)." + +{% endif %} + +When the dependency graph is first enabled, any manifest and lock files for supported ecosystems are parsed immediately. The graph is usually populated within minutes but this may take longer for repositories with many dependencies. Once enabled, the graph is automatically updated with every push to the repository{% if currentVersion == "free-pro-team@latest" %} and every push to other repositories in the graph{% endif %}. + +### Supported package ecosystems + +The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% if currentVersion == "free-pro-team@latest" %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for vulnerable dependencies.{% endif %} + +| Package manager | Languages | Recommended formats | All supported formats | +| --- | --- | --- | ---| +| Composer | PHP | `composer.lock` | `composer.json`, `composer.lock` | +| `dotnet` CLI | .NET languages (C#, C++, F#, VB) | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj` | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj`, `packages.config` | +| Maven | Java, Scala | `pom.xml` | `pom.xml` | +| npm | JavaScript | `package-lock.json` | `package-lock.json`, `package.json`| +| Python PIP | Python | `requirements.txt`, `pipfile.lock` | `requirements.txt`, `pipfile`, `pipfile.lock`, `setup.py`* | +| RubyGems | Ruby | `Gemfile.lock` | `Gemfile.lock`, `Gemfile`, `*.gemspec` | +| Yarn | JavaScript | `yarn.lock` | `package.json`, `yarn.lock` | + +{% note %} + +**Note:** If you list your Python dependencies within a `setup.py` file, we may not be able to parse and list every dependency in your project. + +{% endnote %} + +### Further reading + +- "[Dependency graph](https://en.wikipedia.org/wiki/Dependency_graph)" on Wikipedia +- "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)"{% if currentVersion == "free-pro-team@latest" %} +- "[Viewing insights for your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-insights-for-your-organization)" +- "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)" +- "[Troubleshooting the detection of vulnerable dependencies](/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies)"{% endif %} diff --git a/content/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database.md b/content/code-security/supply-chain-security/browsing-security-vulnerabilities-in-the-github-advisory-database.md similarity index 93% rename from content/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database.md rename to content/code-security/supply-chain-security/browsing-security-vulnerabilities-in-the-github-advisory-database.md index a45c3564bf..1138b031fe 100644 --- a/content/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database.md +++ b/content/code-security/supply-chain-security/browsing-security-vulnerabilities-in-the-github-advisory-database.md @@ -2,15 +2,18 @@ title: Browsing security vulnerabilities in the GitHub Advisory Database intro: 'The {% data variables.product.prodname_advisory_database %} allows you to browse or search for vulnerabilities that affect open source projects on {% data variables.product.company_short %}.' shortTitle: Browsing the Advisory Database +redirect_from: + - /github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database versions: free-pro-team: '*' --- + ### About security vulnerabilities {% data reusables.repositories.a-vulnerability-is %} -{% data variables.product.product_name %} will send you {% data variables.product.prodname_dependabot_alerts %} if we detect that any of the vulnerabilities from the {% data variables.product.prodname_advisory_database %} affect the packages that your repository depends on. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." +{% data variables.product.product_name %} will send you {% data variables.product.prodname_dependabot_alerts %} if we detect that any of the vulnerabilities from the {% data variables.product.prodname_advisory_database %} affect the packages that your repository depends on. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)." ### About the {% data variables.product.prodname_advisory_database %} @@ -68,7 +71,7 @@ You can search the database, and use qualifiers to narrow your search. For examp ### Viewing your vulnerable repositories -For any vulnerability in the {% data variables.product.prodname_advisory_database %}, you can see which of your repositories have a {% data variables.product.prodname_dependabot %} alert for that vulnerability. To see a vulnerable repository, you must have access to {% data variables.product.prodname_dependabot_alerts %} for that repository. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies#access-to-dependabot-alerts)." +For any vulnerability in the {% data variables.product.prodname_advisory_database %}, you can see which of your repositories have a {% data variables.product.prodname_dependabot %} alert for that vulnerability. To see a vulnerable repository, you must have access to {% data variables.product.prodname_dependabot_alerts %} for that repository. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies#access-to-dependabot-alerts)." 1. Navigate to https://github.com/advisories. 2. Click an advisory. diff --git a/content/github/administering-a-repository/configuration-options-for-dependency-updates.md b/content/code-security/supply-chain-security/configuration-options-for-dependency-updates.md similarity index 99% rename from content/github/administering-a-repository/configuration-options-for-dependency-updates.md rename to content/code-security/supply-chain-security/configuration-options-for-dependency-updates.md index a732e3244c..8b6d123978 100644 --- a/content/github/administering-a-repository/configuration-options-for-dependency-updates.md +++ b/content/code-security/supply-chain-security/configuration-options-for-dependency-updates.md @@ -2,6 +2,8 @@ title: Configuration options for dependency updates intro: 'Detailed information for all the options you can use to customize how {% data variables.product.prodname_dependabot %} maintains your repositories.' permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_dependabot %} for the repository.' +redirect_from: + - /github/administering-a-repository/configuration-options-for-dependency-updates miniTocMaxHeadingLevel: 4 versions: free-pro-team: '*' diff --git a/content/github/managing-security-vulnerabilities/configuring-dependabot-security-updates.md b/content/code-security/supply-chain-security/configuring-dependabot-security-updates.md similarity index 95% rename from content/github/managing-security-vulnerabilities/configuring-dependabot-security-updates.md rename to content/code-security/supply-chain-security/configuring-dependabot-security-updates.md index c1ae6ff87f..6175991de2 100644 --- a/content/github/managing-security-vulnerabilities/configuring-dependabot-security-updates.md +++ b/content/code-security/supply-chain-security/configuring-dependabot-security-updates.md @@ -7,9 +7,11 @@ redirect_from: - /github/managing-security-vulnerabilities/configuring-automated-security-fixes - /github/managing-security-vulnerabilities/configuring-automated-security-updates - /github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates + - /github/managing-security-vulnerabilities/configuring-dependabot-security-updates versions: free-pro-team: '*' --- + ### About configuring {% data variables.product.prodname_dependabot_security_updates %} @@ -58,6 +60,6 @@ You can also enable or disable {% data variables.product.prodname_dependabot_sec ### Further reading -- "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" +- "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)" - "[Managing data use settings for your private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository)" - "[Supported package ecosystems](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)" diff --git a/content/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies.md b/content/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies.md new file mode 100644 index 0000000000..2cc0c0b6d6 --- /dev/null +++ b/content/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies.md @@ -0,0 +1,58 @@ +--- +title: Configuring notifications for vulnerable dependencies +shortTitle: Configuring notifications +intro: 'Optimize how you receive notifications about {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %}{% else %}security{% endif %} alerts.' +redirect_from: +- /github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' +--- + +### About notifications for vulnerable dependencies + +{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}When {% data variables.product.prodname_dependabot %} detects vulnerable dependencies in your repositories, we generate a {% data variables.product.prodname_dependabot %} alert and display it on the Security tab for the repository. {% data variables.product.product_name %} notifies the maintainers of affected repositories about the new alert according to their notification preferences.{% else %}When {% data variables.product.product_name %} detects vulnerable dependencies in your repositories, it sends security alerts.{% endif %}{% if currentVersion == "free-pro-team@latest" %} {% data variables.product.prodname_dependabot %} is enabled by default on all public repositories. For {% data variables.product.prodname_dependabot_alerts %}, by default, you will receive {% data variables.product.prodname_dependabot_alerts %} by email, grouped by the specific vulnerability. +{% endif %} + +{% if currentVersion == "free-pro-team@latest" %}If you're an organization owner, you can enable or disable {% data variables.product.prodname_dependabot_alerts %} for all repositories in your organization with one click. You can also set whether the detection of vulnerable dependencies will be enabled or disabled for newly-created repositories. For more information, see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-for-all-new-repositories-when-they-are-added)." +{% endif %} + +{% if enterpriseServerVersions contains currentVersion and currentVersion == "enterprise-server@2.21" %} +Your site administrator needs to enable security alerts for vulnerable dependencies for {% data variables.product.product_location %} before you can use the feature. For more information, see "[Enabling alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} + +{% if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.20" %} +By default, if your site administrator has configured email for notifications on your enterprise, you will receive {% if currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} by email.{% endif %} + +{% if currentVersion ver_gt "enterprise-server@2.21" %}Site administrators can also enable {% data variables.product.prodname_dependabot_alerts %} without notifications. For more information, see "[Enabling {% data variables.product.prodname_dependabot_alerts %} for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} + +{% if currentVersion ver_lt "enterprise-server@2.22" %}Site administrators can also enable security alerts without notifications. For more information, see "[Enabling security alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} + +### Configuring notifications for {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} + +You can configure notification settings for yourself or your organization from the Manage notifications drop-down {% octicon "bell" aria-label="The notifications bell" %} shown at the top of each page. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#choosing-your-notification-settings)." + +{% data reusables.notifications.vulnerable-dependency-notification-delivery-method-customization %} +{% data reusables.notifications.vulnerable-dependency-notification-options %} + +{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} + ![{% data variables.product.prodname_dependabot_alerts %} options](/assets/images/help/notifications-v2/dependabot-alerts-options.png) +{% else %} + ![Security alerts options](/assets/images/help/notifications-v2/security-alerts-options.png) +{% endif %} + +{% note %} + +**Note:** You can filter your notifications on {% data variables.product.company_short %} to show {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %}{% else %} security{% endif %} alerts. For more information, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#dependabot-custom-filters)." + +{% endnote %} + +{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" % %}{% data reusables.repositories.security-alerts-x-github-severity %} For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#filtering-email-notifications){% else %}"[About email notifications](/github/receiving-notifications-about-activity-on-github/about-email-notifications){% endif %}."{% endif %} + +### How to reduce the noise from notifications for vulnerable dependencies + +If you are concerned about receiving too many notifications for {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %}, we recommend you opt into the weekly email digest, or turn off notifications while keeping {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} enabled. You can still navigate to see your {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} in your repository's Security tab.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)."{% endif %} + +### Further reading + +- "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications)" +- "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#supported-is-queries)" diff --git a/content/github/administering-a-repository/customizing-dependency-updates.md b/content/code-security/supply-chain-security/customizing-dependency-updates.md similarity index 98% rename from content/github/administering-a-repository/customizing-dependency-updates.md rename to content/code-security/supply-chain-security/customizing-dependency-updates.md index 95340f31d2..076dd573c9 100644 --- a/content/github/administering-a-repository/customizing-dependency-updates.md +++ b/content/code-security/supply-chain-security/customizing-dependency-updates.md @@ -2,6 +2,8 @@ title: Customizing dependency updates intro: 'You can customize how {% data variables.product.prodname_dependabot %} maintains your dependencies.' permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_dependabot %} for the repository.' +redirect_from: + - /github/administering-a-repository/customizing-dependency-updates versions: free-pro-team: '*' --- diff --git a/content/github/administering-a-repository/enabling-and-disabling-version-updates.md b/content/code-security/supply-chain-security/enabling-and-disabling-version-updates.md similarity index 97% rename from content/github/administering-a-repository/enabling-and-disabling-version-updates.md rename to content/code-security/supply-chain-security/enabling-and-disabling-version-updates.md index 2b92ea8b18..c3e59d8fa0 100644 --- a/content/github/administering-a-repository/enabling-and-disabling-version-updates.md +++ b/content/code-security/supply-chain-security/enabling-and-disabling-version-updates.md @@ -2,9 +2,12 @@ title: Enabling and disabling version updates intro: 'You can configure your repository so that {% data variables.product.prodname_dependabot %} automatically updates the packages you use.' permissions: 'People with write permissions to a repository can enable or disable {% data variables.product.prodname_dependabot_version_updates %} for the repository.' +redirect_from: + - /github/administering-a-repository/enabling-and-disabling-version-updates versions: free-pro-team: '*' --- + {% data reusables.dependabot.beta-note-no-link %} diff --git a/content/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository.md b/content/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository.md new file mode 100644 index 0000000000..b920fd241b --- /dev/null +++ b/content/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository.md @@ -0,0 +1,116 @@ +--- +title: Exploring the dependencies of a repository +intro: 'You can use the dependency graph to see the packages your project depends on{% if currentVersion == "free-pro-team@latest" %} and the repositories that depend on it{% endif %}. In addition, you can see any vulnerabilities detected in its dependencies.' +redirect_from: + - /github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' +--- + +### Viewing the dependency graph + +{% data reusables.repositories.enable-security-alerts %} + +The dependency graph shows the dependencies{% if currentVersion == "free-pro-team@latest" %} and dependents{% endif %} of your repository. For information about the detection of dependencies and which ecosystems are supported, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.accessing-repository-graphs %} +{% data reusables.repositories.click-dependency-graph %}{% if currentVersion == "free-pro-team@latest" %} +4. Optionally, under "Dependency graph", click **Dependents**. +![Dependents tab on the dependency graph page](/assets/images/help/graphs/dependency-graph-dependents-tab.png){% endif %} + +#### Dependencies view + +{% if currentVersion == "free-pro-team@latest" %} +Dependencies are grouped by ecosystem. You can expand a dependency to view its dependencies. For dependencies on public repositories hosted on {% data variables.product.product_name %}, you can also click a dependency to view the repository. Dependencies on private repositories, private packages, or unrecognized files are shown in plain text. + +If vulnerabilities have been detected in the repository, these are shown at the top of the view for users with access to {% data variables.product.prodname_dependabot_alerts %}. + +![Dependencies graph](/assets/images/help/graphs/dependencies_graph.png) + +{% endif %} + +{% if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21" %} +Any direct and indirect dependencies that are specified in the repository's manifest or lock files are listed, grouped by ecosystem. If vulnerabilities have been detected in the repository, these are shown at the top of the view for users with access to {% data variables.product.prodname_dependabot_alerts %}. + +![Dependencies graph](/assets/images/help/graphs/dependencies_graph_server.png) + +{% note %} + +**Note:** {% data variables.product.prodname_ghe_server %} does not populate the **Dependents** view. + +{% endnote %} + +{% endif %} + +{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} +Any direct and indirect dependencies that are specified in the repository's manifest or lock files are listed, grouped by ecosystem. If vulnerabilities have been detected in the repository, these are shown at the top of the view for users with access to security alerts. + +![Dependencies graph](/assets/images/help/graphs/dependencies_graph_server.png) + +{% note %} + +**Note:** {% data variables.product.prodname_ghe_server %} does not populate the **Dependents** view. + +{% endnote %} + +{% endif %} + +{% if currentVersion == "free-pro-team@latest" %} +#### Dependents view + +For public repositories, the dependents view shows how the repository is used by other repositories. To show only the repositories that contain a library in a package manager, click **NUMBER Packages** immediately above the list of dependent repositories. The dependent counts are approximate and may not always match the dependents listed. + +![Dependents graph](/assets/images/help/graphs/dependents_graph.png) + +### Enabling and disabling the dependency graph for a private repository + +Repository administrators can enable or disable the dependency graph for private repositories. + +You can also enable or disable the dependency graph for all repositories owned by your user account or organization. For more information, see "[Managing security and analysis settings for your user account](/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account)" or "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)." + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-settings %} +{% data reusables.repositories.navigate-to-security-and-analysis %} +4. Read the message about granting {% data variables.product.product_name %} read-only access to the repository data to enable the dependency graph, then next to "Dependency Graph", click **Enable**. + !["Enable" button for the dependency graph](/assets/images/help/repository/dependency-graph-enable-button.png) + +You can disable the dependency graph at any time by clicking **Disable** next to "Dependency Graph" on the Security & analysis tab. + +### Changing the "Used by" package + +If the dependency graph is enabled, and your repository contains a package that's published on a supported package ecosystem, {% data variables.product.prodname_dotcom %} displays a "Used by" section in the sidebar of the **Code** tab of your repository. For more information about the supported package ecosystems, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)." + +The "Used by" section shows the number of public references to the package that were found, and displays the avatars of some of the owners of the dependent projects. + +!["Used by" sidebar section](/assets/images/help/repository/used-by-section.png) + +Clicking any item in this section takes you to the **Dependents** tab of the dependency graph. + +The "Used by" section represents a single package from the repository. If you have admin permissions to a repository that contains multiple packages, you can choose which package the "Used by" section represents. + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-settings %} +{% data reusables.repositories.navigate-to-security-and-analysis %} +4. Under "Configure security and analysis features", click the drop-down menu in the "Used by counter" section and choose a package. + ![Choose a "Used by" package](/assets/images/help/repository/choose-used-by-package.png) + +{% endif %} + +### Troubleshooting the dependency graph + +If your dependency graph is empty, there may be a problem with the file containing your dependencies. Check the file to ensure that it's correctly formatted for the file type. + +{% if currentVersion == "free-pro-team@latest" %} +If the file is correctly formatted, then check its size. The dependency graph ignores individual manifest and lock files that are over 0.5 Mb, unless you are a {% data variables.product.prodname_enterprise %} user. It processes up to 20 manifest or lock files per repository by default, so you can split dependencies into smaller files in subdirectories of the repository.{% endif %} + +If a manifest or lock file is not processed, its dependencies are omitted from the dependency graph and they can't be checked for vulnerable dependencies. + +### Further reading + +- "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)"{% if currentVersion == "free-pro-team@latest" %} +- "[Viewing insights for your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-insights-for-your-organization)" +- "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)" +- "[Understanding how {% data variables.product.product_name %} uses and protects your data](/github/understanding-how-github-uses-and-protects-your-data)" +{% endif %} diff --git a/content/code-security/supply-chain-security/index.md b/content/code-security/supply-chain-security/index.md new file mode 100644 index 0000000000..3a268fa7be --- /dev/null +++ b/content/code-security/supply-chain-security/index.md @@ -0,0 +1,33 @@ +--- +title: Securing your software supply chain +shortTitle: Supply chain security +intro: 'Visualize, maintain, and secure the dependencies in your software supply chain.' +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' +--- + +### Table of Contents + +{% topic_link_in_list /understanding-your-software-supply-chain %} + {% link_in_list /about-the-dependency-graph %} + {% link_in_list /exploring-the-dependencies-of-a-repository %} +{% topic_link_in_list /keeping-your-dependencies-updated-automatically %} + {% link_in_list /about-dependabot-version-updates %} + {% link_in_list /enabling-and-disabling-version-updates %} + {% link_in_list /listing-dependencies-configured-for-version-updates %} + {% link_in_list /managing-pull-requests-for-dependency-updates %} + {% link_in_list /managing-encrypted-secrets-for-dependabot %} + {% link_in_list /customizing-dependency-updates %} + {% link_in_list /configuration-options-for-dependency-updates %} + {% link_in_list /keeping-your-actions-up-to-date-with-dependabot %} +{% topic_link_in_list /managing-vulnerabilities-in-your-projects-dependencies %} + {% link_in_list /about-managing-vulnerable-dependencies %} + {% link_in_list /browsing-security-vulnerabilities-in-the-github-advisory-database %} + {% link_in_list /about-alerts-for-vulnerable-dependencies %} + {% link_in_list /configuring-notifications-for-vulnerable-dependencies %} + {% link_in_list /about-dependabot-security-updates %} + {% link_in_list /configuring-dependabot-security-updates %} + {% link_in_list /viewing-and-updating-vulnerable-dependencies-in-your-repository %} + {% link_in_list /troubleshooting-the-detection-of-vulnerable-dependencies %} + {% link_in_list /troubleshooting-dependabot-errors %} diff --git a/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot.md b/content/code-security/supply-chain-security/keeping-your-actions-up-to-date-with-dependabot.md similarity index 98% rename from content/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot.md rename to content/code-security/supply-chain-security/keeping-your-actions-up-to-date-with-dependabot.md index 4e6c7b54b8..1694bd4322 100644 --- a/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot.md +++ b/content/code-security/supply-chain-security/keeping-your-actions-up-to-date-with-dependabot.md @@ -3,6 +3,7 @@ title: Keeping your actions up to date with Dependabot intro: 'You can use {% data variables.product.prodname_dependabot %} to keep the actions you use updated to the latest versions.' redirect_from: - /github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot + - /github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot versions: free-pro-team: '*' --- diff --git a/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md b/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically.md similarity index 69% rename from content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md rename to content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically.md index 3c6c79af15..873422334c 100644 --- a/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md +++ b/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically.md @@ -2,6 +2,8 @@ title: Keeping your dependencies updated automatically intro: '{% data variables.product.prodname_dependabot %} can maintain your repository''s dependencies automatically.' mapTopic: true +redirect_from: + - /github/administering-a-repository/keeping-your-dependencies-updated-automatically versions: free-pro-team: '*' --- diff --git a/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md b/content/code-security/supply-chain-security/listing-dependencies-configured-for-version-updates.md similarity index 94% rename from content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md rename to content/code-security/supply-chain-security/listing-dependencies-configured-for-version-updates.md index 19a0c93aee..a97b765301 100644 --- a/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md +++ b/content/code-security/supply-chain-security/listing-dependencies-configured-for-version-updates.md @@ -1,6 +1,8 @@ --- title: Listing dependencies configured for version updates intro: 'You can view the dependencies that {% data variables.product.prodname_dependabot %} monitors for updates.' +redirect_from: + - /github/administering-a-repository/listing-dependencies-configured-for-version-updates versions: free-pro-team: '*' --- diff --git a/content/github/administering-a-repository/managing-encrypted-secrets-for-dependabot.md b/content/code-security/supply-chain-security/managing-encrypted-secrets-for-dependabot.md similarity index 97% rename from content/github/administering-a-repository/managing-encrypted-secrets-for-dependabot.md rename to content/code-security/supply-chain-security/managing-encrypted-secrets-for-dependabot.md index 1362ff7866..aaa941f169 100644 --- a/content/github/administering-a-repository/managing-encrypted-secrets-for-dependabot.md +++ b/content/code-security/supply-chain-security/managing-encrypted-secrets-for-dependabot.md @@ -1,6 +1,8 @@ --- title: Managing encrypted secrets for Dependabot intro: You can store sensitive information, like passwords and access tokens, as encrypted secrets and then reference these in the {% data variables.product.prodname_dependabot %} configuration file. +redirect_from: + - /github/administering-a-repository/managing-encrypted-secrets-for-dependabot versions: free-pro-team: '*' --- diff --git a/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md b/content/code-security/supply-chain-security/managing-pull-requests-for-dependency-updates.md similarity index 97% rename from content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md rename to content/code-security/supply-chain-security/managing-pull-requests-for-dependency-updates.md index ebe089535a..6617b14a79 100644 --- a/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md +++ b/content/code-security/supply-chain-security/managing-pull-requests-for-dependency-updates.md @@ -1,6 +1,8 @@ --- title: Managing pull requests for dependency updates intro: 'You manage pull requests raised by {% data variables.product.prodname_dependabot %} in much the same way as other pull requests, but there are some extra options.' +redirect_from: + - /github/administering-a-repository/managing-pull-requests-for-dependency-updates versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies.md b/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies.md new file mode 100644 index 0000000000..dea8a0c2b3 --- /dev/null +++ b/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies.md @@ -0,0 +1,12 @@ +--- +title: Managing vulnerabilities in your project's dependencies +intro: 'You can track your repository''s dependencies and receive {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} when {% data variables.product.product_name %} detects vulnerable dependencies.' +mapTopic: true +redirect_from: + - /github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies + - /github/managing-security-vulnerabilities +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' +--- + diff --git a/content/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors.md b/content/code-security/supply-chain-security/troubleshooting-dependabot-errors.md similarity index 99% rename from content/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors.md rename to content/code-security/supply-chain-security/troubleshooting-dependabot-errors.md index 0867da11f0..206c83cb4a 100644 --- a/content/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors.md +++ b/content/code-security/supply-chain-security/troubleshooting-dependabot-errors.md @@ -4,6 +4,7 @@ intro: 'Sometimes {% data variables.product.prodname_dependabot %} is unable to shortTitle: Troubleshooting errors redirect_from: - /github/managing-security-vulnerabilities/troubleshooting-github-dependabot-errors + - /github/managing-security-vulnerabilities/troubleshooting-dependabot-errors versions: free-pro-team: '*' --- diff --git a/content/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies.md b/content/code-security/supply-chain-security/troubleshooting-the-detection-of-vulnerable-dependencies.md similarity index 97% rename from content/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies.md rename to content/code-security/supply-chain-security/troubleshooting-the-detection-of-vulnerable-dependencies.md index ce6fe1bc8e..abf40eba97 100644 --- a/content/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies.md +++ b/content/code-security/supply-chain-security/troubleshooting-the-detection-of-vulnerable-dependencies.md @@ -2,6 +2,8 @@ title: Troubleshooting the detection of vulnerable dependencies intro: 'If the dependency information reported by {% data variables.product.product_name %} is not what you expected, there are a number of points to consider, and various things you can check.' shortTitle: Troubleshooting detection +redirect_from: + - /github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies versions: free-pro-team: '*' --- @@ -14,7 +16,7 @@ The results of dependency detection reported by {% data variables.product.produc * {% data variables.product.prodname_advisory_database %} is one of the data sources that {% data variables.product.prodname_dotcom %} uses to identify vulnerable dependencies. It's a free, curated database of vulnerability information for common package ecosystems on {% data variables.product.prodname_dotcom %}. It includes both data reported directly to {% data variables.product.prodname_dotcom %} from {% data variables.product.prodname_security_advisories %}, as well as official feeds and community sources. This data is reviewed and curated by {% data variables.product.prodname_dotcom %} to ensure that false or unactionable information is not shared with the development community. For more information, see "[Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}](/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database)" and "[About {% data variables.product.prodname_security_advisories %}](/github/managing-security-vulnerabilities/about-github-security-advisories)." * The dependency graph parses all known package manifest files in a user’s repository. For example, for npm it will parse the _package-lock.json_ file. It constructs a graph of all of the repository’s dependencies and public dependents. This happens when you enable the dependency graph and when anyone pushes to the default branch, and it includes commits that makes changes to a supported manifest format. For more information, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." -* {% data variables.product.prodname_dependabot %} scans any push, to the default branch, that contains a manifest file. When a new vulnerability record is added, it scans all existing repositories and generates an alert for each vulnerable repository. {% data variables.product.prodname_dependabot_alerts %} are aggregated at the repository level, rather than creating one alert per vulnerability. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." +* {% data variables.product.prodname_dependabot %} scans any push, to the default branch, that contains a manifest file. When a new vulnerability record is added, it scans all existing repositories and generates an alert for each vulnerable repository. {% data variables.product.prodname_dependabot_alerts %} are aggregated at the repository level, rather than creating one alert per vulnerability. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)." * {% data variables.product.prodname_dependabot_security_updates %} are triggered when you receive an alert about a vulnerable dependency in your repository. Where possible, {% data variables.product.prodname_dependabot %} creates a pull request in your repository to upgrade the vulnerable dependency to the minimum possible secure version needed to avoid the vulnerability. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)" and "[Troubleshooting {% data variables.product.prodname_dependabot %} errors](/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors)." {% data variables.product.prodname_dependabot %} doesn't scan repositories for vulnerable dependencies on a schedule, but rather when something changes. For example, a scan is triggered when a new dependency is added ({% data variables.product.prodname_dotcom %} checks for this on every push), or when a new vulnerability is discovered and added to the advisory database. @@ -95,7 +97,7 @@ When you click to display the alert details, you can see how many vulnerabilitie ### Further reading -- "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" +- "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)" - "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)" - "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)" - "[Troubleshooting {% data variables.product.prodname_dependabot %} errors](/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors)" diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain.md new file mode 100644 index 0000000000..a9faca223c --- /dev/null +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain.md @@ -0,0 +1,12 @@ +--- +title: Understanding your software supply chain +mapTopic: true +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' +--- + +### Table of Contents + +{% link_in_list /about-the-dependency-graph %} +{% link_in_list /exploring-the-dependencies-of-a-repository %} \ No newline at end of file diff --git a/content/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository.md b/content/code-security/supply-chain-security/viewing-and-updating-vulnerable-dependencies-in-your-repository.md similarity index 92% rename from content/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository.md rename to content/code-security/supply-chain-security/viewing-and-updating-vulnerable-dependencies-in-your-repository.md index 532fddecb5..f0b1d522c2 100644 --- a/content/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository.md +++ b/content/code-security/supply-chain-security/viewing-and-updating-vulnerable-dependencies-in-your-repository.md @@ -3,12 +3,13 @@ title: Viewing and updating vulnerable dependencies in your repository intro: 'If {% data variables.product.product_name %} discovers vulnerable dependencies in your project, you can view them on the Dependabot alerts tab of your repository. Then, you can update your project to resolve or dismiss the vulnerability.' redirect_from: - /articles/viewing-and-updating-vulnerable-dependencies-in-your-repository + - /github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository permissions: Repository administrators and organization owners can view and update dependencies. shortTitle: Viewing and updating vulnerable dependencies versions: free-pro-team: '*' --- -Your repository's {% data variables.product.prodname_dependabot %} alerts tab lists all open and closed {% data variables.product.prodname_dependabot_alerts %} and corresponding {% data variables.product.prodname_dependabot_security_updates %}. You can sort the list of alerts using the drop-down menu, and you can click into specific alerts for more details. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." +Your repository's {% data variables.product.prodname_dependabot %} alerts tab lists all open and closed {% data variables.product.prodname_dependabot_alerts %} and corresponding {% data variables.product.prodname_dependabot_security_updates %}. You can sort the list of alerts using the drop-down menu, and you can click into specific alerts for more details. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)." You can enable automatic security updates for any repository that uses {% data variables.product.prodname_dependabot_alerts %} and the dependency graph. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)." @@ -34,7 +35,7 @@ You can enable automatic security updates for any repository that uses {% data v ### Further reading -- "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" +- "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)" - "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-dependabot-security-updates)" - "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)" - "[Troubleshooting the detection of vulnerable dependencies](/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies)" diff --git a/content/developers/apps/creating-a-github-app-using-url-parameters.md b/content/developers/apps/creating-a-github-app-using-url-parameters.md index 99d0f03a93..029bb21d48 100644 --- a/content/developers/apps/creating-a-github-app-using-url-parameters.md +++ b/content/developers/apps/creating-a-github-app-using-url-parameters.md @@ -80,7 +80,7 @@ Permission | Description [`starring`](/rest/reference/permissions-required-for-github-apps/#permission-on-starring) | Grants access to the [Starring API](/rest/reference/activity#starring). Can be one of: `none`, `read`, or `write`. [`statuses`](/rest/reference/permissions-required-for-github-apps/#permission-on-statuses) | Grants access to the [Statuses API](/rest/reference/repos#statuses). Can be one of: `none`, `read`, or `write`. [`team_discussions`](/rest/reference/permissions-required-for-github-apps/#permission-on-team-discussions) | Grants access to the [Team Discussions API](/rest/reference/teams#discussions) and the [Team Discussion Comments API](/rest/reference/teams#discussion-comments). Can be one of: `none`, `read`, or `write`.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@1.19" %} -`vulnerability_alerts`| Grants access to receive security alerts for vulnerable dependencies in a repository. See "[About security alerts for vulnerable dependencies](/articles/about-security-alerts-for-vulnerable-dependencies)" to learn more. Can be one of: `none` or `read`.{% endif %} +`vulnerability_alerts`| Grants access to receive security alerts for vulnerable dependencies in a repository. See "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies/)" to learn more. Can be one of: `none` or `read`.{% endif %} `watching` | Grants access to list and change repositories a user is subscribed to. Can be one of: `none`, `read`, or `write`. ### {% data variables.product.prodname_github_app %} webhook events diff --git a/content/developers/webhooks-and-events/webhook-events-and-payloads.md b/content/developers/webhooks-and-events/webhook-events-and-payloads.md index f55db93d4d..c5b4dd3ae5 100644 --- a/content/developers/webhooks-and-events/webhook-events-and-payloads.md +++ b/content/developers/webhooks-and-events/webhook-events-and-payloads.md @@ -1123,7 +1123,7 @@ Key | Type | Description {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@1.19" %} ### security_advisory -Activity related to a security advisory. A security advisory provides information about security-related vulnerabilities in software on GitHub. The security advisory dataset also powers the GitHub security alerts, see "[About security alerts for vulnerable dependencies](/articles/about-security-alerts-for-vulnerable-dependencies/)." +Activity related to a security advisory. A security advisory provides information about security-related vulnerabilities in software on GitHub. The security advisory dataset also powers the GitHub security alerts, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies/)." {% endif %} #### Availability diff --git a/content/github/administering-a-repository/index.md b/content/github/administering-a-repository/index.md index 1a2e46445c..b0ee003aad 100644 --- a/content/github/administering-a-repository/index.md +++ b/content/github/administering-a-repository/index.md @@ -25,6 +25,7 @@ versions: {% link_in_list /disabling-or-limiting-github-actions-for-a-repository %}{% if currentVersion == "free-pro-team@latest" %} {% link_in_list /enabling-or-disabling-github-discussions-for-a-repository %}{% endif %} {% link_in_list /managing-git-lfs-objects-in-archives-of-your-repository %} + {% link_in_list /managing-security-and-analysis-settings-for-your-repository %} {% link_in_list /enabling-anonymous-git-read-access-for-a-repository %} {% link_in_list /configuring-autolinks-to-reference-external-resources %} {% link_in_list /renaming-a-repository %} @@ -53,18 +54,3 @@ versions: {% link_in_list /linking-to-releases %} {% link_in_list /comparing-releases %} {% link_in_list /automation-for-release-forms-with-query-parameters %} -{% topic_link_in_list /securing-your-repository %} - {% link_in_list /about-securing-your-repository %} - {% link_in_list /about-secret-scanning %} - {% link_in_list /configuring-secret-scanning-for-your-repositories %} - {% link_in_list /managing-alerts-from-secret-scanning %} - {% link_in_list /managing-security-and-analysis-settings-for-your-repository %} -{% topic_link_in_list /keeping-your-dependencies-updated-automatically %} - {% link_in_list /about-dependabot-version-updates %} - {% link_in_list /enabling-and-disabling-version-updates %} - {% link_in_list /listing-dependencies-configured-for-version-updates %} - {% link_in_list /managing-pull-requests-for-dependency-updates %} - {% link_in_list /managing-encrypted-secrets-for-dependabot %} - {% link_in_list /customizing-dependency-updates %} - {% link_in_list /configuration-options-for-dependency-updates %} - {% link_in_list /keeping-your-actions-up-to-date-with-dependabot %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md index 2f68164e62..d0db699796 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md @@ -4,6 +4,7 @@ intro: 'If a pull request contains changes to dependencies, you can view a summa versions: free-pro-team: '*' --- + {% note %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md index 93644fd985..f93352b3e7 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md @@ -5,9 +5,7 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/managing-security-vulnerabilities/about-automated-code-scanning versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md index 0e514fc25e..3020cad90c 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md @@ -4,9 +4,7 @@ shortTitle: About integration intro: 'You can perform {% data variables.product.prodname_code_scanning %} externally and then display the results in {% data variables.product.prodname_dotcom %}, or set up webhooks that listen to {% data variables.product.prodname_code_scanning %} activity in your repository.' product: '{% data reusables.gated-features.code-scanning %}' versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md index d8f88cd46b..6aaa062bda 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md @@ -5,8 +5,6 @@ intro: 'You can find vulnerabilities and errors in your project''s code on {% da mapTopic: true product: '{% data reusables.gated-features.code-scanning %}' versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md index c54a30bb93..69833f48d8 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md @@ -5,9 +5,7 @@ product: '{% data reusables.gated-features.code-scanning %}' permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_code_scanning %} for the repository.' miniTocMaxHeadingLevel: 4 versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md index b94bfc2fba..0b9fb49146 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md @@ -7,9 +7,7 @@ miniTocMaxHeadingLevel: 4 redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning-in-your-ci-system versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta-codeql-runner %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md index 3f9ef7ac04..95903d8529 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md @@ -8,9 +8,7 @@ redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning-for-compiled-languages - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-action-for-compiled-languages versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md index cf5bc1721e..069f4c06d4 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md @@ -5,9 +5,7 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/managing-security-vulnerabilities/finding-security-vulnerabilities-in-your-projects-code versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- ### Table of Contents diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md index ee5e4671d5..4f1645697a 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md @@ -7,8 +7,6 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-results-from-code-scanning versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md index a72de426b2..86814ff7a1 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md @@ -5,9 +5,7 @@ intro: 'From the security view, you can view, fix, {% if currentVersion == "ente product: '{% data reusables.gated-features.code-scanning %}' permissions: 'If you have write permission to a repository you can manage {% data variables.product.prodname_code_scanning %} alerts for that repository.' versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' redirect_from: - /github/managing-security-vulnerabilities/managing-alerts-from-automated-code-scanning - /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-alerts-from-code-scanning diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md index a05a2ca349..b09765a36b 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md @@ -4,9 +4,7 @@ shortTitle: '{% data variables.product.prodname_code_scanning_capc %} in a conta intro: 'You can run {% data variables.product.prodname_code_scanning %} in a container by ensuring that all processes run in the same container.' product: '{% data reusables.gated-features.code-scanning %}' versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md index b2ff31219a..cf9179fe48 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md @@ -6,9 +6,7 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/running-code-scanning-in-your-ci-system versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md index eb3de38525..73e51fed22 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md @@ -6,9 +6,7 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/about-sarif-support-for-code-scanning versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md index e7659aeb09..922fb53dfa 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md @@ -9,9 +9,7 @@ redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning - /github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md index 496acb2802..52cf4fbc39 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md @@ -5,9 +5,7 @@ intro: 'When {% data variables.product.prodname_code_scanning %} identifies a pr product: '{% data reusables.gated-features.code-scanning %}' permissions: 'If you have read permission for a repository, you can see annotations on pull requests. With write permission, you can see detailed information and resolve {% data variables.product.prodname_code_scanning %} alerts for that repository.' versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md index 6a37da5f57..54452ec7d0 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md @@ -6,9 +6,7 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-code-scanning-in-your-ci-system versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta-codeql-runner %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md index 5e1f031769..f440b44066 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md @@ -6,9 +6,7 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-code-scanning versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md index a8908896f7..fe95be083a 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md @@ -7,9 +7,7 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/managing-security-vulnerabilities/uploading-a-code-scanning-analysis-to-github versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md index 942e66060b..32e5adbc43 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md @@ -5,8 +5,6 @@ intro: 'The {% data variables.product.prodname_codeql_runner %} allows you to us mapTopic: true product: '{% data reusables.gated-features.code-scanning %}' versions: - free-pro-team: '*' - enterprise-server: '>=2.22' - github-ae: '*' + enterprise-server: '2.22' --- diff --git a/content/github/index.md b/content/github/index.md index ea86322b6d..4208107f6a 100644 --- a/content/github/index.md +++ b/content/github/index.md @@ -51,9 +51,10 @@ versions: {% link_in_list /administering-a-repository %} {% link_in_list /visualizing-repository-data-with-graphs %} -{% link_in_list /managing-security-vulnerabilities %} -{% link_in_list /finding-security-vulnerabilities-and-errors-in-your-code %} +{% if currentVersion == "enterprise-server@2.22" %} +{% link_in_list /managing-security-vulnerabilities %} +{% link_in_list /finding-security-vulnerabilities-and-errors-in-your-code %}{% endif %} {% link_in_list /managing-files-in-a-repository %} diff --git a/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md b/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md index 1fdc443166..fddc4c765a 100644 --- a/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md +++ b/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md @@ -5,8 +5,7 @@ redirect_from: - /articles/about-security-alerts-for-vulnerable-dependencies - /github/managing-security-vulnerabilities/about-security-alerts-for-vulnerable-dependencies versions: - free-pro-team: '*' - enterprise-server: '*' + enterprise-server: '<=2.22' --- ### About vulnerable dependencies diff --git a/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md b/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md index b1097a9342..7497da42df 100644 --- a/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md +++ b/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md @@ -3,8 +3,7 @@ title: Configuring notifications for vulnerable dependencies shortTitle: Configuring notifications intro: 'Optimize how you receive notifications about {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %}{% else %}security{% endif %} alerts.' versions: - free-pro-team: '*' - enterprise-server: '>=2.21' + enterprise-server: '<=2.22' --- ### About notifications for vulnerable dependencies diff --git a/content/github/managing-security-vulnerabilities/index.md b/content/github/managing-security-vulnerabilities/index.md index 9afde0213a..bb3284dab5 100644 --- a/content/github/managing-security-vulnerabilities/index.md +++ b/content/github/managing-security-vulnerabilities/index.md @@ -3,30 +3,11 @@ title: Managing security vulnerabilities redirect_from: - /categories/managing-security-vulnerabilities versions: - free-pro-team: '*' - enterprise-server: '*' + enterprise-server: '<=2.22' --- ### Table of Contents -{% topic_link_in_list /managing-security-vulnerabilities-in-your-project %} - {% link_in_list /adding-a-security-policy-to-your-repository %} - {% link_in_list /about-github-security-advisories %} - {% link_in_list /permission-levels-for-security-advisories %} - {% link_in_list /creating-a-security-advisory %} - {% link_in_list /adding-a-collaborator-to-a-security-advisory %} - {% link_in_list /removing-a-collaborator-from-a-security-advisory %} - {% link_in_list /collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability %} - {% link_in_list /publishing-a-security-advisory %} - {% link_in_list /editing-a-security-advisory %} - {% link_in_list /withdrawing-a-security-advisory %} {% topic_link_in_list /managing-vulnerabilities-in-your-projects-dependencies %} - {% link_in_list /about-managing-vulnerable-dependencies %} - {% link_in_list /browsing-security-vulnerabilities-in-the-github-advisory-database %} {% link_in_list /about-alerts-for-vulnerable-dependencies %} {% link_in_list /configuring-notifications-for-vulnerable-dependencies %} - {% link_in_list /about-dependabot-security-updates %} - {% link_in_list /configuring-dependabot-security-updates %} - {% link_in_list /viewing-and-updating-vulnerable-dependencies-in-your-repository %} - {% link_in_list /troubleshooting-the-detection-of-vulnerable-dependencies %} - {% link_in_list /troubleshooting-dependabot-errors %} diff --git a/content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md b/content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md deleted file mode 100644 index e8274c7d6e..0000000000 --- a/content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Managing security vulnerabilities in your project -intro: 'You can discover, discuss, fix, and disclose security vulnerabilities in your repositories.' -mapTopic: true -redirect_from: - - /articles/managing-security-vulnerabilities-in-your-project -versions: - free-pro-team: '*' ---- - diff --git a/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md b/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md index 85d0c898be..be5b7bfa34 100644 --- a/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md +++ b/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md @@ -8,7 +8,6 @@ redirect_from: - /articles/managing-security-vulnerabilities-in-your-projects-dependencies/ - /articles/managing-vulnerabilities-in-your-projects-dependencies versions: - free-pro-team: '*' - enterprise-server: '*' + enterprise-server: '<=2.22' --- diff --git a/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md index cdc27e3eaf..48c8ef00d9 100644 --- a/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md @@ -142,7 +142,7 @@ In this section, you can find the repository permission levels required for secu | [Designate additional people or teams to receive {% data variables.product.prodname_dependabot_alerts %}](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-security-alerts) for vulnerable dependencies | | | | | **X** | | Create [security advisories](/github/managing-security-vulnerabilities/about-github-security-advisories) | | | | | **X** |{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" or currentVersion == "github-ae@latest" %} | Manage access to {% data variables.product.prodname_GH_advanced_security %} features (see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)") | | | | | **X** |{% endif %}{% if currentVersion == "free-pro-team@latest" %} -| [Enable the dependency graph](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-and-dependents-of-a-repository) for a private repository | | | | | **X** | +| [Enable the dependency graph](/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository) for a private repository | | | | | **X** | | [View dependency reviews](/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request) | **X** | **X** | **X** | **X** | **X** |{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" or currentVersion == "github-ae@latest" %} | [View {% data variables.product.prodname_code_scanning %} alerts on pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests) | **X** | **X** | **X** | **X** | **X** | | [List, dismiss, and delete {% data variables.product.prodname_code_scanning %} alerts](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository) | | | **X** | **X** | **X** |{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.0" or currentVersion == 'github-ae@next' %} diff --git a/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md b/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md index c366f251c9..40b0be0fbe 100644 --- a/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md +++ b/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md @@ -2,8 +2,7 @@ title: About the dependency graph intro: 'Detailed information about the dependency graph, the ecosystems it supports, and how it determines which packages a repository depends on.' versions: - free-pro-team: '*' - enterprise-server: '*' + enterprise-server: '<=2.22' --- ### Dependency graph availability @@ -45,7 +44,7 @@ You can use the dependency graph to: - Explore the repositories your code depends on{% if currentVersion == "free-pro-team@latest" %}, and those that depend on it{% endif %}. For more information, see "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)." {% if currentVersion == "free-pro-team@latest" %} - View a summary of the dependencies used in your organization's repositories in a single dashboard. For more information, see "[Viewing insights for your organization](/articles/viewing-insights-for-your-organization#viewing-organization-dependency-insights)."{% endif %} -- View and update vulnerable dependencies for your repository. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)."{% if currentVersion == "free-pro-team@latest" %} +- View and update vulnerable dependencies for your repository. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)."{% if currentVersion == "free-pro-team@latest" %} - See information about vulnerable dependencies in pull requests. For more information, see "[Reviewing dependency changes in a pull request](/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request)."{% endif %} ### Enabling the dependency graph diff --git a/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md b/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md index c78fdbcd3f..fd475b3f6e 100644 --- a/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md +++ b/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md @@ -8,8 +8,7 @@ redirect_from: - /github/visualizing-repository-data-with-graphs/listing-the-projects-that-depend-on-a-repository - /github/visualizing-repository-data-with-graphs/exploring-the-dependencies-and-dependents-of-a-repository versions: - free-pro-team: '*' - enterprise-server: '*' + enterprise-server: '<=2.22' --- ### Viewing the dependency graph diff --git a/content/github/visualizing-repository-data-with-graphs/index.md b/content/github/visualizing-repository-data-with-graphs/index.md index bbe4472b6b..e79dce1312 100644 --- a/content/github/visualizing-repository-data-with-graphs/index.md +++ b/content/github/visualizing-repository-data-with-graphs/index.md @@ -25,5 +25,6 @@ versions: {% topic_link_in_list /understanding-connections-between-repositories %} {% link_in_list /viewing-a-repositorys-network %} {% link_in_list /listing-the-forks-of-a-repository %} - {% link_in_list /about-the-dependency-graph %} - {% link_in_list /exploring-the-dependencies-of-a-repository %} + {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %}{% link_in_list /viewing-the-dependencies-of-a-repository %}{% endif %} + {% if currentVersion ver_lt "enterprise-server@3.0" %}{% link_in_list /about-the-dependency-graph %} + {% link_in_list /exploring-the-dependencies-of-a-repository %}{% endif %} diff --git a/content/github/visualizing-repository-data-with-graphs/viewing-the-dependencies-of-a-repository.md b/content/github/visualizing-repository-data-with-graphs/viewing-the-dependencies-of-a-repository.md new file mode 100644 index 0000000000..6fa6663351 --- /dev/null +++ b/content/github/visualizing-repository-data-with-graphs/viewing-the-dependencies-of-a-repository.md @@ -0,0 +1,13 @@ +--- +title: Viewing the dependencies of a repository +intro: 'You can use the dependency graph to explore the code your repository depends on.' +versions: + free-pro-team: '*' + enterprise-server: '>=3.0' +--- + +Almost all software relies on code developed and maintained by other developers, often known as a supply chain. For example, utilities, libraries, and frameworks. These dependencies are an integral part of your code and any bugs or vulnerabilities in them may affect your code. It's important to review and maintain these dependencies. + +The dependency graph provides a great way to visualize and explore the dependencies for a repository. For more information, see "[About the dependency graph](/code-security/supply-chain-security/about-the-dependency-graph)" and "[Exploring the dependencies of a repository](/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository)." + +You can also set up your repository so that {% data variables.product.company_short %} alerts you automatically whenever a security vulnerability is found in one of your dependencies. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." diff --git a/data/products.yml b/data/products.yml index e49c18cf2d..b598d00c18 100644 --- a/data/products.yml +++ b/data/products.yml @@ -5,6 +5,7 @@ productsInOrder: - github - admin - discussions + - code-security - actions - packages - developers diff --git a/data/reusables/code-scanning/enabling-options.md b/data/reusables/code-scanning/enabling-options.md index a56da29214..90f32e196f 100644 --- a/data/reusables/code-scanning/enabling-options.md +++ b/data/reusables/code-scanning/enabling-options.md @@ -1,4 +1,4 @@ | Type of analysis | Options for generating alerts | |------------------|-------------------------------| -| {% data variables.product.prodname_codeql %} | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or using the {% data variables.product.prodname_codeql_runner %} in a third-party continuous integration (CI) system (see "[Running code scanning in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-code-scanning-in-your-ci-system)"). +| {% data variables.product.prodname_codeql %} | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or using the {% data variables.product.prodname_codeql_runner %} in a third-party continuous integration (CI) system (see "[Running code scanning in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system)"). | Third‑party | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or generated externally and uploaded to {% data variables.product.product_name %} (see "[Uploading a SARIF file to {% data variables.product.prodname_dotcom %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github)").| diff --git a/data/reusables/webhooks/repository_vulnerability_alert_short_desc.md b/data/reusables/webhooks/repository_vulnerability_alert_short_desc.md index 00324e3dc1..bf2b01e473 100644 --- a/data/reusables/webhooks/repository_vulnerability_alert_short_desc.md +++ b/data/reusables/webhooks/repository_vulnerability_alert_short_desc.md @@ -1 +1 @@ -Activity related to security vulnerability alerts in a repository. {% data reusables.webhooks.action_type_desc %} For more information, see the "[About security alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-security-alerts-for-vulnerable-dependencies)". +Activity related to security vulnerability alerts in a repository. {% data reusables.webhooks.action_type_desc %} For more information, see the "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies/)". diff --git a/tests/fixtures/article-with-broken-links-and-images.md b/tests/fixtures/article-with-broken-links-and-images.md index 96bfbb9553..abf65dbb78 100644 --- a/tests/fixtures/article-with-broken-links-and-images.md +++ b/tests/fixtures/article-with-broken-links-and-images.md @@ -20,7 +20,7 @@ This anchor is broken on all versions because it points to a heading that does n This link is broken on Enterprise versions because it points to a Dotcom-only article: [GitHub's Products](/github/getting-started-with-github/githubs-products) -This link is OK because it points to a Dotcom-only article with the `dotcom-only` class: About security alerts for vulnerable dependencies." +This link is OK because it points to a Dotcom-only article with the `dotcom-only` class: About alerts for vulnerable dependencies." This link is broken on Dotcom because it points to an Enterprise-only article: [Working with Pre-Receive Hooks](/github/collaborating-with-issues-and-pull-requests/working-with-pre-receive-hooks) From d862636ceccd24ecd8f931bd486d6fd3da2b4b24 Mon Sep 17 00:00:00 2001 From: Liam Newman Date: Tue, 16 Mar 2021 12:48:37 -0700 Subject: [PATCH 17/37] "Issued at" time should allow for clock drift (#4156) If `iat` is in the future from the server clock perspective GitHub will report an error. This can happen if the clock on the client system is significant out of sync with UTC and/or server time. Adjusting `iat` to an arbitrary 60 seconds in the past means the error will not occur in cases where the client system clock is only off by a few seconds, which is not uncommon. --- content/developers/apps/authenticating-with-github-apps.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/developers/apps/authenticating-with-github-apps.md b/content/developers/apps/authenticating-with-github-apps.md index 45b446f810..c4d09073ff 100644 --- a/content/developers/apps/authenticating-with-github-apps.md +++ b/content/developers/apps/authenticating-with-github-apps.md @@ -77,8 +77,8 @@ private_key = OpenSSL::PKey::RSA.new(private_pem) # Generate the JWT payload = { - # issued at time - iat: Time.now.to_i, + # issued at time, 60 seconds in the past to allow for clock drift + iat: Time.now.to_i - 60, # JWT expiration time (10 minute maximum) exp: Time.now.to_i + (10 * 60), # {% data variables.product.prodname_github_app %}'s identifier From 8d757eec3396e2f283aa4a65db836b5f3449acc8 Mon Sep 17 00:00:00 2001 From: Emily Gould <4822039+emilyistoofunky@users.noreply.github.com> Date: Tue, 16 Mar 2021 17:01:54 -0500 Subject: [PATCH 18/37] Move team discussions content to orgs category (#18217) * Move files and update indexes * Add redirects * Update links to the articles --- ...st-practices-for-community-conversations-on-github.md | 2 +- content/github/building-a-strong-community/index.md | 5 ----- .../about-conversations-on-github.md | 2 +- .../configuring-notifications.md | 2 +- .../watching-and-unwatching-team-discussions.md | 4 ++-- .../about-team-discussions.md | 7 ++++--- .../about-teams.md | 2 +- .../collaborating-with-your-team.md | 1 + .../creating-a-team-discussion.md | 9 +++++---- .../disabling-team-discussions-for-your-organization.md | 2 +- .../editing-or-deleting-a-team-discussion.md | 7 ++++--- .../index.md | 5 +++++ .../permission-levels-for-an-organization.md | 8 ++++---- .../pinning-a-team-discussion.md | 7 ++++--- ...enforcing-team-policies-in-your-enterprise-account.md | 2 +- content/rest/reference/teams.md | 4 ++-- .../organizations/team-discussions-are-for-orgs.md | 2 +- 17 files changed, 38 insertions(+), 33 deletions(-) rename content/github/{building-a-strong-community => setting-up-and-managing-organizations-and-teams}/about-team-discussions.md (89%) rename content/github/{building-a-strong-community => setting-up-and-managing-organizations-and-teams}/collaborating-with-your-team.md (80%) rename content/github/{building-a-strong-community => setting-up-and-managing-organizations-and-teams}/creating-a-team-discussion.md (66%) rename content/github/{building-a-strong-community => setting-up-and-managing-organizations-and-teams}/editing-or-deleting-a-team-discussion.md (70%) rename content/github/{building-a-strong-community => setting-up-and-managing-organizations-and-teams}/pinning-a-team-discussion.md (63%) diff --git a/content/discussions/guides/best-practices-for-community-conversations-on-github.md b/content/discussions/guides/best-practices-for-community-conversations-on-github.md index e4cc2321b6..6631fd4d3c 100644 --- a/content/discussions/guides/best-practices-for-community-conversations-on-github.md +++ b/content/discussions/guides/best-practices-for-community-conversations-on-github.md @@ -29,7 +29,7 @@ You can use {% data variables.product.prodname_discussions %} to discuss big pic Issues are useful for discussing specific details of a project such as bug reports and planned improvements. For more information, see "[About issues](/articles/about-issues)." Pull requests allow you to comment directly on proposed changes. For more information, see "[About pull requests](/articles/about-pull-requests)" and "[Commenting on a pull request](/articles/commenting-on-a-pull-request)." -{% data reusables.organizations.team-discussions-purpose %} For more information, see "[About team discussions](/articles/about-team-discussions)." +{% data reusables.organizations.team-discussions-purpose %} For more information, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)." ### Following contributing guidelines diff --git a/content/github/building-a-strong-community/index.md b/content/github/building-a-strong-community/index.md index 70d3a13506..6e81525948 100644 --- a/content/github/building-a-strong-community/index.md +++ b/content/github/building-a-strong-community/index.md @@ -52,8 +52,3 @@ versions: {% link_in_list /viewing-a-wikis-history-of-changes %} {% link_in_list /changing-access-permissions-for-wikis %} {% link_in_list /disabling-wikis %} -{% topic_link_in_list /collaborating-with-your-team %} - {% link_in_list /about-team-discussions %} - {% link_in_list /creating-a-team-discussion %} - {% link_in_list /editing-or-deleting-a-team-discussion %} - {% link_in_list /pinning-a-team-discussion %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md b/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md index 8e21b6d214..9ead9a73f9 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md @@ -16,7 +16,7 @@ You can create and participate in issues, pull requests, and team discussions, d Issues are useful for discussing specific details of a project such as bug reports and planned improvements. For more information, see "[About issues](/articles/about-issues)." Pull requests allow you to comment directly on proposed changes. For more information, see "[About pull requests](/articles/about-pull-requests)" and "[Commenting on a pull request](/articles/commenting-on-a-pull-request)." -{% data reusables.organizations.team-discussions-purpose %} For more information, see "[About team discussions](/articles/about-team-discussions)." +{% data reusables.organizations.team-discussions-purpose %} For more information, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)." ### Reacting to ideas in comments diff --git a/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md b/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md index 64f25bd77b..912d2a499f 100644 --- a/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md +++ b/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md @@ -63,7 +63,7 @@ Email notifications also allow flexibility with the types of notifications you r ### About participating and watching notifications -When you watch a repository, you're subscribing to updates for activity in that repository. Similarly, when you watch a specific team's discussions, you're subscribing to all conversation updates on that team's page. For more information, see "[About team discussions](/github/building-a-strong-community/about-team-discussions)." +When you watch a repository, you're subscribing to updates for activity in that repository. Similarly, when you watch a specific team's discussions, you're subscribing to all conversation updates on that team's page. For more information, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)." To see repositories that you're watching, go to your [watching page](https://github.com/watching). For more information, see "[Managing subscriptions and notifications on GitHub](/github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github)." {% if currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.20" %} diff --git a/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-team-discussions.md b/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-team-discussions.md index 6205d243d6..39e0433971 100644 --- a/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-team-discussions.md +++ b/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-team-discussions.md @@ -5,7 +5,7 @@ versions: enterprise-server: <2.21 --- -By default, you'll automatically receive notifications for team discussions you're a member of. If you don't want to receive certain notifications for an existing team discussion, you must unwatch that team. You can also unsubscribe or subscribe to specific team discussion posts. For more information, see "[About team discussions](/articles/about-team-discussions)" and "[Subscribing to and unsubscribing from notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications)." +By default, you'll automatically receive notifications for team discussions you're a member of. If you don't want to receive certain notifications for an existing team discussion, you must unwatch that team. You can also unsubscribe or subscribe to specific team discussion posts. For more information, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)" and "[Subscribing to and unsubscribing from notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications)." If you don't want to automatically watch team discussions when you become a member of new teams, you can update your automatic watching settings. @@ -58,5 +58,5 @@ If you don't want to automatically receive team discussion notifications when yo ### Further reading - "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)" -- "[About team discussions](/articles/about-team-discussions)" +- "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)" - "[About teams](/articles/about-teams)" diff --git a/content/github/building-a-strong-community/about-team-discussions.md b/content/github/setting-up-and-managing-organizations-and-teams/about-team-discussions.md similarity index 89% rename from content/github/building-a-strong-community/about-team-discussions.md rename to content/github/setting-up-and-managing-organizations-and-teams/about-team-discussions.md index 6bf572b9e9..a0eadccf6a 100644 --- a/content/github/building-a-strong-community/about-team-discussions.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/about-team-discussions.md @@ -3,6 +3,7 @@ title: About team discussions intro: 'Your team can plan together, update one another, or talk about any topic you''d like in discussion posts on your team''s page in an organization.' redirect_from: - /articles/about-team-discussions + - /github/building-a-strong-community/about-team-discussions versions: free-pro-team: '*' enterprise-server: '*' @@ -15,7 +16,7 @@ Any organization member can post on your team's page or participate in a public ![Discussions tab of team page with public and private discussions](/assets/images/help/organizations/team-page-discussions-tab.png) -You can link to any team discussion to reference it elsewhere. You can pin important posts to your team's page for quick reference later. For more information, see "[Pinning a team discussion](/articles/pinning-a-team-discussion)." +You can link to any team discussion to reference it elsewhere. You can pin important posts to your team's page for quick reference later. For more information, see "[Pinning a team discussion](/github/setting-up-and-managing-organizations-and-teams/pinning-a-team-discussion)." ![Pinned discussions tab of team page with pinned discussion](/assets/images/help/organizations/team-discussions-pinned.png) @@ -41,5 +42,5 @@ For more information, see {% if currentVersion == "free-pro-team@latest" or curr - "[About conversations on {% data variables.product.prodname_dotcom %}](/articles/about-conversations-on-github)" - "[About teams](/articles/about-teams)" -- "[Creating a team discussion](/articles/creating-a-team-discussion)" -- "[Editing or deleting a team discussion](/articles/editing-or-deleting-a-team-discussion)" +- "[Creating a team discussion](/github/setting-up-and-managing-organizations-and-teams/creating-a-team-discussion)" +- "[Editing or deleting a team discussion](/github/setting-up-and-managing-organizations-and-teams/editing-or-deleting-a-team-discussion)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/about-teams.md b/content/github/setting-up-and-managing-organizations-and-teams/about-teams.md index 6d56d44867..ae7e1db25f 100644 --- a/content/github/setting-up-and-managing-organizations-and-teams/about-teams.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/about-teams.md @@ -36,7 +36,7 @@ You can also use LDAP Sync to synchronize {% data variables.product.product_loca Each team has its own page within an organization. On a team's page, you can view team members, child teams, and the team's repositories. Organization owners and team maintainers can access team settings and update the team's description and profile picture from the team's page. -Organization members can create and participate in discussions with the team. For more information, see "[About team discussions](/articles/about-team-discussions)." +Organization members can create and participate in discussions with the team. For more information, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)." ![Team page listing team members and discussions](/assets/images/help/organizations/team-page-discussions-tab.png) diff --git a/content/github/building-a-strong-community/collaborating-with-your-team.md b/content/github/setting-up-and-managing-organizations-and-teams/collaborating-with-your-team.md similarity index 80% rename from content/github/building-a-strong-community/collaborating-with-your-team.md rename to content/github/setting-up-and-managing-organizations-and-teams/collaborating-with-your-team.md index 6e17a6cece..803f56541d 100644 --- a/content/github/building-a-strong-community/collaborating-with-your-team.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/collaborating-with-your-team.md @@ -4,6 +4,7 @@ intro: 'Within an organization, your team can work together across projects usin mapTopic: true redirect_from: - /articles/collaborating-with-your-team + - /github/building-a-strong-community/collaborating-with-your-team versions: free-pro-team: '*' enterprise-server: '*' diff --git a/content/github/building-a-strong-community/creating-a-team-discussion.md b/content/github/setting-up-and-managing-organizations-and-teams/creating-a-team-discussion.md similarity index 66% rename from content/github/building-a-strong-community/creating-a-team-discussion.md rename to content/github/setting-up-and-managing-organizations-and-teams/creating-a-team-discussion.md index 0481b6502b..8acd9ff3fc 100644 --- a/content/github/building-a-strong-community/creating-a-team-discussion.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/creating-a-team-discussion.md @@ -3,13 +3,14 @@ title: Creating a team discussion intro: 'Any organization member can create a _public_ team discussion post. To create a _private_ team discussion post, you must be a member of the team or an organization owner.' redirect_from: - /articles/creating-a-team-discussion + - /github/building-a-strong-community/creating-a-team-discussion versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' --- -{% data reusables.organizations.team-discussions-permissions %} For more information, see "[About team discussions](/articles/about-team-discussions)." +{% data reusables.organizations.team-discussions-permissions %} For more information, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)." {% data reusables.profile.access_profile %} {% data reusables.profile.access_org %} @@ -24,6 +25,6 @@ versions: ### Further reading - - "[About team discussions](/articles/about-team-discussions)" - - "[Editing or deleting a team discussion](/articles/editing-or-deleting-a-team-discussion)" - - "[Pinning a team discussion](/articles/pinning-a-team-discussion)" + - "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)" + - "[Editing or deleting a team discussion](/github/setting-up-and-managing-organizations-and-teams/editing-or-deleting-a-team-discussion)" + - "[Pinning a team discussion](/github/setting-up-and-managing-organizations-and-teams/pinning-a-team-discussion)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/disabling-team-discussions-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/disabling-team-discussions-for-your-organization.md index e4d9e8d55a..0517b4e082 100644 --- a/content/github/setting-up-and-managing-organizations-and-teams/disabling-team-discussions-for-your-organization.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/disabling-team-discussions-for-your-organization.md @@ -9,7 +9,7 @@ versions: github-ae: '*' --- -{% data reusables.organizations.team-discussions-default %} For more information on team discussions, see "[About team discussions](/articles/about-team-discussions)." +{% data reusables.organizations.team-discussions-default %} For more information on team discussions, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)." {% data reusables.profile.access_profile %} {% data reusables.profile.access_org %} diff --git a/content/github/building-a-strong-community/editing-or-deleting-a-team-discussion.md b/content/github/setting-up-and-managing-organizations-and-teams/editing-or-deleting-a-team-discussion.md similarity index 70% rename from content/github/building-a-strong-community/editing-or-deleting-a-team-discussion.md rename to content/github/setting-up-and-managing-organizations-and-teams/editing-or-deleting-a-team-discussion.md index ba567880e8..8224eede21 100644 --- a/content/github/building-a-strong-community/editing-or-deleting-a-team-discussion.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/editing-or-deleting-a-team-discussion.md @@ -3,6 +3,7 @@ title: Editing or deleting a team discussion intro: 'Organization members can edit or delete discussions on a team''s page. If you''re an organization member, you can edit or delete the discussion.' redirect_from: - /articles/editing-or-deleting-a-team-discussion + - /github/building-a-strong-community/editing-or-deleting-a-team-discussion versions: free-pro-team: '*' enterprise-server: '*' @@ -21,6 +22,6 @@ versions: ### Further reading - - "[About team discussions](/articles/about-team-discussions)" - - "[Creating a team discussion](/articles/creating-a-team-discussion)" - - "[Pinning a team discussion](/articles/pinning-a-team-discussion)" + - "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)" + - "[Creating a team discussion](/github/setting-up-and-managing-organizations-and-teams/creating-a-team-discussion)" + - "[Pinning a team discussion](/github/setting-up-and-managing-organizations-and-teams/pinning-a-team-discussion)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/index.md b/content/github/setting-up-and-managing-organizations-and-teams/index.md index a51df67c98..d4de72c1ad 100644 --- a/content/github/setting-up-and-managing-organizations-and-teams/index.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/index.md @@ -51,6 +51,11 @@ versions: {% link_in_list /disabling-team-discussions-for-your-organization %} {% link_in_list /managing-scheduled-reminders-for-your-team %} {% link_in_list /deleting-a-team %} +{% topic_link_in_list /collaborating-with-your-team %} + {% link_in_list /about-team-discussions %} + {% link_in_list /creating-a-team-discussion %} + {% link_in_list /editing-or-deleting-a-team-discussion %} + {% link_in_list /pinning-a-team-discussion %} {% topic_link_in_list /managing-access-to-your-organizations-repositories %} {% link_in_list /repository-permission-levels-for-an-organization %} {% link_in_list /setting-base-permissions-for-an-organization %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md index 54c5d401fb..f7c6c54e70 100644 --- a/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md @@ -49,8 +49,8 @@ Organization members can have *owner*{% if currentVersion == "free-pro-team@late | @mention any visible team | **X** | **X** | | | Can be made a *team maintainer* | **X** | **X** | | | View organization insights (see "[Viewing insights for your organization](/articles/viewing-insights-for-your-organization)" for details) | **X** | **X** | | -| View and post public team discussions to **all teams** (see "[About team discussions](/articles/about-team-discussions)" for details) | **X** | **X** | | -| View and post private team discussions to **all teams** (see "[About team discussions](/articles/about-team-discussions)" for details) | **X** | | | +| View and post public team discussions to **all teams** (see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)" for details) | **X** | **X** | | +| View and post private team discussions to **all teams** (see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)" for details) | **X** | | | | Edit and delete team discussions in **all teams** (see "[Managing disruptive comments](/articles/managing-disruptive-comments)" for details) | **X** | | | | Hide comments on commits, pull requests, and issues (see "[Managing disruptive comments](/articles/managing-disruptive-comments/#hiding-a-comment)" for details) | **X** | **X** | | | Disable team discussions for an organization (see "[Disabling team discussions for your organization](/articles/disabling-team-discussions-for-your-organization)" for details) | **X** | | | @@ -103,8 +103,8 @@ Organization members can have *owner*{% if currentVersion == "free-pro-team@late | Transfer repositories | **X** | | | Manage an organization's SSH certificate authorities (see "[Managing your organization's SSH certificate authorities](/articles/managing-your-organizations-ssh-certificate-authorities)" for details) | **X** | | | Create project boards (see "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)" for details) | **X** | **X** | | -| View and post public team discussions to **all teams** (see "[About team discussions](/articles/about-team-discussions)" for details) | **X** | **X** | | -| View and post private team discussions to **all teams** (see "[About team discussions](/articles/about-team-discussions)" for details) | **X** | | | +| View and post public team discussions to **all teams** (see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)" for details) | **X** | **X** | | +| View and post private team discussions to **all teams** (see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)" for details) | **X** | | | | Edit and delete team discussions in **all teams** (for more information, see "[Managing disruptive comments](/articles/managing-disruptive-comments)) | **X** | | | | Hide comments on commits, pull requests, and issues (see "[Managing disruptive comments](/articles/managing-disruptive-comments/#hiding-a-comment)" for details) | **X** | **X** | **X** | | Disable team discussions for an organization (see "[Disabling team discussions for your organization](/articles/disabling-team-discussions-for-your-organization)" for details) | **X** | | | diff --git a/content/github/building-a-strong-community/pinning-a-team-discussion.md b/content/github/setting-up-and-managing-organizations-and-teams/pinning-a-team-discussion.md similarity index 63% rename from content/github/building-a-strong-community/pinning-a-team-discussion.md rename to content/github/setting-up-and-managing-organizations-and-teams/pinning-a-team-discussion.md index 77726b1399..81ffa905ab 100644 --- a/content/github/building-a-strong-community/pinning-a-team-discussion.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/pinning-a-team-discussion.md @@ -3,6 +3,7 @@ title: Pinning a team discussion intro: 'You can pin important discussions to your organization''s team pages for easy reference, and unpin discussions that are no longer relevant.' redirect_from: - /articles/pinning-a-team-discussion + - /github/building-a-strong-community/pinning-a-team-discussion versions: free-pro-team: '*' enterprise-server: '*' @@ -18,6 +19,6 @@ versions: ### Further reading - - "[About team discussions](/articles/about-team-discussions)" - - "[Creating a team discussion](/articles/creating-a-team-discussion)" - - "[Editing or deleting a team discussion](/articles/editing-or-deleting-a-team-discussion)" + - "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)" + - "[Creating a team discussion](/github/setting-up-and-managing-organizations-and-teams/creating-a-team-discussion)" + - "[Editing or deleting a team discussion](/github/setting-up-and-managing-organizations-and-teams/editing-or-deleting-a-team-discussion)" diff --git a/content/github/setting-up-and-managing-your-enterprise/enforcing-team-policies-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise/enforcing-team-policies-in-your-enterprise-account.md index 6d95d38f9f..abe2e1f5e5 100644 --- a/content/github/setting-up-and-managing-your-enterprise/enforcing-team-policies-in-your-enterprise-account.md +++ b/content/github/setting-up-and-managing-your-enterprise/enforcing-team-policies-in-your-enterprise-account.md @@ -13,7 +13,7 @@ versions: ### Enforcing a policy for team discussions -Across all organizations owned by your enterprise account, you can enable or disable team discussions, or allow owners to administer the setting on the organization level. For more information, see "[About team discussions](/articles/about-team-discussions/)." +Across all organizations owned by your enterprise account, you can enable or disable team discussions, or allow owners to administer the setting on the organization level. For more information, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions/)." {% data reusables.enterprise-accounts.access-enterprise %} {% data reusables.enterprise-accounts.policies-tab %} diff --git a/content/rest/reference/teams.md b/content/rest/reference/teams.md index 7223e949ec..d7a12c9377 100644 --- a/content/rest/reference/teams.md +++ b/content/rest/reference/teams.md @@ -16,7 +16,7 @@ This API is only available to authenticated members of the team's [organization] ## Discussions -The team discussions API allows you to get, create, edit, and delete discussion posts on a team's page. You can use team discussions to have conversations that are not specific to a repository or project. Any member of the team's [organization](/rest/reference/orgs) can create and read public discussion posts. For more details, see "[About team discussions](/articles/about-team-discussions/)." To learn more about commenting on a discussion post, see the [team discussion comments API](/rest/reference/teams#discussion-comments). This API is only available to authenticated members of the team's organization. +The team discussions API allows you to get, create, edit, and delete discussion posts on a team's page. You can use team discussions to have conversations that are not specific to a repository or project. Any member of the team's [organization](/rest/reference/orgs) can create and read public discussion posts. For more details, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions/)." To learn more about commenting on a discussion post, see the [team discussion comments API](/rest/reference/teams#discussion-comments). This API is only available to authenticated members of the team's organization. {% for operation in currentRestOperations %} {% if operation.subcategory == 'discussions' %}{% include rest_operation %}{% endif %} @@ -24,7 +24,7 @@ The team discussions API allows you to get, create, edit, and delete discussion ## Discussion comments -The team discussion comments API allows you to get, create, edit, and delete discussion comments on a [team discussion](/rest/reference/teams#discussions) post. Any member of the team's [organization](/rest/reference/orgs) can create and read comments on a public discussion. For more details, see "[About team discussions](/articles/about-team-discussions/)." This API is only available to authenticated members of the team's organization. +The team discussion comments API allows you to get, create, edit, and delete discussion comments on a [team discussion](/rest/reference/teams#discussions) post. Any member of the team's [organization](/rest/reference/orgs) can create and read comments on a public discussion. For more details, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions/)." This API is only available to authenticated members of the team's organization. {% for operation in currentRestOperations %} {% if operation.subcategory == 'discussion-comments' %}{% include rest_operation %}{% endif %} diff --git a/data/reusables/organizations/team-discussions-are-for-orgs.md b/data/reusables/organizations/team-discussions-are-for-orgs.md index e2d9192787..cb0f53f8ed 100644 --- a/data/reusables/organizations/team-discussions-are-for-orgs.md +++ b/data/reusables/organizations/team-discussions-are-for-orgs.md @@ -1 +1 @@ -Team discussions are only available on team pages in organizations. For more information, see "[About team discussions](/articles/about-team-discussions)." +Team discussions are only available on team pages in organizations. For more information, see "[About team discussions](/github/setting-up-and-managing-organizations-and-teams/about-team-discussions)." From a34dcc43c2ac4e37aa3b6bb1e23251d6d404b7e5 Mon Sep 17 00:00:00 2001 From: Sarah Edwards Date: Tue, 16 Mar 2021 16:26:31 -0700 Subject: [PATCH 19/37] Actions for Project Management (#17849) Co-authored-by: Lucas Costi Co-authored-by: Laura Coursen Co-authored-by: Jeroen Rietveld --- .../actions/guides/adding-labels-to-issues.md | 68 ++++++++++++++ .../actions/guides/closing-inactive-issues.md | 77 ++++++++++++++++ ...nting-on-an-issue-when-a-label-is-added.md | 70 +++++++++++++++ content/actions/guides/index.md | 15 ++++ ...oving-assigned-issues-on-project-boards.md | 75 ++++++++++++++++ ...card-is-added-to-a-project-board-column.md | 75 ++++++++++++++++ .../guides/scheduling-issue-creation.md | 89 +++++++++++++++++++ ...g-github-actions-for-project-management.md | 40 +++++++++ .../events-that-trigger-workflows.md | 6 +- data/reusables/actions/choose-repo.md | 1 + data/reusables/actions/commit-workflow.md | 1 + data/reusables/actions/make-workflow-file.md | 1 + data/reusables/actions/schedule-delay.md | 5 ++ 13 files changed, 518 insertions(+), 5 deletions(-) create mode 100644 content/actions/guides/adding-labels-to-issues.md create mode 100644 content/actions/guides/closing-inactive-issues.md create mode 100644 content/actions/guides/commenting-on-an-issue-when-a-label-is-added.md create mode 100644 content/actions/guides/moving-assigned-issues-on-project-boards.md create mode 100644 content/actions/guides/removing-a-label-when-a-card-is-added-to-a-project-board-column.md create mode 100644 content/actions/guides/scheduling-issue-creation.md create mode 100644 content/actions/guides/using-github-actions-for-project-management.md create mode 100644 data/reusables/actions/choose-repo.md create mode 100644 data/reusables/actions/commit-workflow.md create mode 100644 data/reusables/actions/make-workflow-file.md create mode 100644 data/reusables/actions/schedule-delay.md diff --git a/content/actions/guides/adding-labels-to-issues.md b/content/actions/guides/adding-labels-to-issues.md new file mode 100644 index 0000000000..618af66b80 --- /dev/null +++ b/content/actions/guides/adding-labels-to-issues.md @@ -0,0 +1,68 @@ +--- +title: Adding labels to issues +intro: You can use {% data variables.product.prodname_actions %} to automatically label issues. +product: '{% data reusables.gated-features.actions %}' +versions: + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' +type: 'tutorial' +topics: + - 'Workflows' + - 'Project management' +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} +{% data reusables.actions.ae-beta %} +{% data reusables.actions.ae-self-hosted-runners-notice %} + +### Introduction + +This tutorial demonstrates how to use the [`andymckay/labeler` action](https://github.com/marketplace/actions/simple-issue-labeler) in a workflow to label newly opened or reopened issues. For example, you can add the `triage` label every time an issue is opened or reopened. Then, you can see all issues that need to be triaged by filtering for issues with the `triage` label. + +In the tutorial, you will first make a workflow file that uses the [`andymckay/labeler` action](https://github.com/marketplace/actions/simple-issue-labeler). Then, you will customize the workflow to suit your needs. + +### Creating the workflow + +1. {% data reusables.actions.choose-repo %} +2. {% data reusables.actions.make-workflow-file %} +3. Copy the following YAML contents into your workflow file. + + {% raw %} + ```yaml{:copy} + name: Label issues + on: + issues: + types: + - reopened + - opened + jobs: + label_issues: + runs-on: ubuntu-latest + steps: + - name: Label issues + uses: andymckay/labeler@1.0.2 + with: + add-labels: "triage" + ``` + {% endraw %} +4. Customize the parameters in your workflow file: + - Change the value for `add-labels` to the list of labels that you want to add to the issue. Separate multiple labels with commas. For example, `"help wanted, good first issue"`. For more information about labels, see "[Managing labels](/github/managing-your-work-on-github/managing-labels#applying-labels-to-issues-and-pull-requests)." +5. {% data reusables.actions.commit-workflow %} + +### Testing the workflow + +Every time an issue in your repository is opened or reopened, this workflow will add the labels that you specified to the issue. + +Test out your workflow by creating an issue in your repository. + +1. Create an issue in your repository. For more information, see "[Creating an issue](/github/managing-your-work-on-github/creating-an-issue)." +2. To see the workflow run that was triggered by creating the issue, view the history of your workflow runs. For more information, see "[Viewing workflow run history](/actions/managing-workflow-runs/viewing-workflow-run-history)." +3. When the workflow completes, the issue that you created should have the specified labels added. + +### Next steps + +- To learn more about additional things you can do with the `andymckay/labeler` action, like removing labels or skipping this action if the issue is assigned or has a specific label, see the [`andymckay/labeler` action documentation](https://github.com/marketplace/actions/simple-issue-labeler). +- To learn more about different events that can trigger your workflow, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#issues)." The `andymckay/labeler` action only works on `issues`, `pull_request`, or `project_card` events. +- [Search GitHub](https://github.com/search?q=%22uses:+andymckay/labeler%22&type=code) for examples of workflows using this action. diff --git a/content/actions/guides/closing-inactive-issues.md b/content/actions/guides/closing-inactive-issues.md new file mode 100644 index 0000000000..461ef0aca2 --- /dev/null +++ b/content/actions/guides/closing-inactive-issues.md @@ -0,0 +1,77 @@ +--- +title: Closing inactive issues +intro: You can use {% data variables.product.prodname_actions %} to comment on or close issues that have been inactive for a certain period of time. +product: '{% data reusables.gated-features.actions %}' +versions: + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' +type: 'tutorial' +topics: + - 'Workflows' + - 'Project management' +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} +{% data reusables.actions.ae-beta %} +{% data reusables.actions.ae-self-hosted-runners-notice %} + +### Introduction + +This tutorial demonstrates how to use the [`actions/stale` action](https://github.com/marketplace/actions/close-stale-issues) to comment on and close issues that have been inactive for a certain period of time. For example, you can comment if an issue has been inactive for 30 days to prompt participants to take action. Then, if no additional activity occurs after 14 days, you can close the issue. + +In the tutorial, you will first make a workflow file that uses the [`actions/stale` action](https://github.com/marketplace/actions/close-stale-issues). Then, you will customize the workflow to suit your needs. + +### Creating the workflow + +1. {% data reusables.actions.choose-repo %} +2. {% data reusables.actions.make-workflow-file %} +3. Copy the following YAML contents into your workflow file. + + {% raw %} + ```yaml{:copy} + name: Close inactive issues + on: + schedule: + - cron: "30 1 * * *" + + jobs: + close-issues: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v3 + with: + days-before-issue-stale: 30 + days-before-issue-close: 14 + stale-issue-label: "stale" + stale-issue-message: "This issue is stale because it has been open for 30 days with no activity." + close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." + days-before-pr-stale: -1 + days-before-pr-close: -1 + repo-token: ${{ secrets.GITHUB_TOKEN }} + ``` + {% endraw %} +4. Customize the parameters in your workflow file: + - Change the value for `on.schedule` to dictate when you want this workflow to run. In the example above, the workflow will run every day at 1:30 UTC. For more information about scheduled workflows, see "[Scheduled events](/actions/reference/events-that-trigger-workflows#scheduled-events)." + - Change the value for `days-before-issue-stale` to the number of days without activity before the `actions/stale` action labels an issue. If you never want this action to label issues, set this value to `-1`. + - Change the value for `days-before-issue-close` to the number of days without activity before the `actions/stale` action closes an issue. If you never want this action to close issues, set this value to `-1`. + - Change the value for `stale-issue-label` to the label that you want to apply to issues that have been inactive for the amount of time specified by `days-before-issue-stale`. + - Change the value for `stale-issue-message` to the comment that you want to add to issues that are labeled by the `actions/stale` action. + - Change the value for `close-issue-message` to the comment that you want to add to issues that are closed by the `actions/stale` action. +5. {% data reusables.actions.commit-workflow %} + +### Expected results + +Based on the `schedule` parameter (for example, every day at 1:30 UTC), your workflow will find issues that have been inactive for the specified period of time and will add the specified comment and label. Additionally, your workflow will close any previously labeled issues if no additional activity has occurred for the specified period of time. + +{% data reusables.actions.schedule-delay %} + +You can view the history of your workflow runs to see this workflow run periodically. For more information, see "[Viewing workflow run history](/actions/managing-workflow-runs/viewing-workflow-run-history)." + +This workflow will only label and/or close 30 issues at a time in order to avoid rate limit abuse. You can configure this with the `operations-per-run` setting. For more information, see the [`actions/stale` action documentation](https://github.com/marketplace/actions/close-stale-issues). + +### Next steps + +- To learn more about additional things you can do with the `actions/stale` action, like closing inactive pull requests, ignoring issues with certain labels or milestones, or only checking issues with certain labels, see the [`actions/stale` action documentation](https://github.com/marketplace/actions/close-stale-issues). +- [Search GitHub](https://github.com/search?q=%22uses%3A+actions%2Fstale%22&type=code) for examples of workflows using this action. diff --git a/content/actions/guides/commenting-on-an-issue-when-a-label-is-added.md b/content/actions/guides/commenting-on-an-issue-when-a-label-is-added.md new file mode 100644 index 0000000000..50f5ad45a4 --- /dev/null +++ b/content/actions/guides/commenting-on-an-issue-when-a-label-is-added.md @@ -0,0 +1,70 @@ +--- +title: Commenting on an issue when a label is added +intro: You can use {% data variables.product.prodname_actions %} to automatically comment on issues when a specific label is applied. +product: '{% data reusables.gated-features.actions %}' +versions: + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' +type: 'tutorial' +topics: + - 'Workflows' + - 'Project management' +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} +{% data reusables.actions.ae-beta %} +{% data reusables.actions.ae-self-hosted-runners-notice %} + +### Introduction + +This tutorial demonstrates how to use the [`peter-evans/create-or-update-comment` action](https://github.com/marketplace/actions/create-or-update-comment) to comment on an issue when a specific label is applied. For example, when the `help-wanted` label is added to an issue, you can add a comment to encourage contributors to work on the issue. + +In the tutorial, you will first make a workflow file that uses the [`peter-evans/create-or-update-comment` action](https://github.com/marketplace/actions/create-or-update-comment). Then, you will customize the workflow to suit your needs. + +### Creating the workflow + +1. {% data reusables.actions.choose-repo %} +2. {% data reusables.actions.make-workflow-file %} +3. Copy the following YAML contents into your workflow file. + + {% raw %} + ```yaml{:copy} + name: Add comment + on: + issues: + types: + - labeled + jobs: + add-comment: + if: github.event.label.name == 'help-wanted' + runs-on: ubuntu-latest + steps: + - name: Add comment + uses: peter-evans/create-or-update-comment@v1 + with: + issue-number: ${{ github.event.issue.number }} + body: | + This issue is available for anyone to work on. **Make sure to reference this issue in your pull request.** :sparkles: Thank you for your contribution! :sparkles: + ``` + {% endraw %} +4. Customize the parameters in your workflow file: + - Replace `help-wanted` in `if: github.event.label.name == 'help-wanted'` with the label that you want to act on. If you want to act on more than one label, separate the conditions with `||`. For example, `if: github.event.label.name == 'bug' || github.event.label.name == 'fix me'` will comment whenever the `bug` or `fix me` labels are added to an issue. + - Change the value for `body` to the comment that you want to add. GitHub flavored markdown is supported. For more information about markdown, see "[Basic writing and formatting syntax](/github/writing-on-github/basic-writing-and-formatting-syntax)." +5. {% data reusables.actions.commit-workflow %} + +### Testing the workflow + +Every time an issue in your repository is labeled, this workflow will run. If the label that was added is one of the labels that you specified in your workflow file, the `peter-evans/create-or-update-comment` action will add the comment that you specified to the issue. + +Test your workflow by applying your specified label to an issue. + +1. Open an issue in your repository. For more information, see "[Creating an issue](/github/managing-your-work-on-github/creating-an-issue)." +2. Label the issue with the specified label in your workflow file. For more information, see "[Managing labels](/github/managing-your-work-on-github/managing-labels#applying-labels-to-issues-and-pull-requests)." +3. To see the workflow run triggered by labeling the issue, view the history of your workflow runs. For more information, see "[Viewing workflow run history](/actions/managing-workflow-runs/viewing-workflow-run-history)." +4. When the workflow completes, the issue that you labeled should have a comment added. + +### Next steps + +- To learn more about additional things you can do with the `peter-evans/create-or-update-comment` action, like adding reactions, visit the [`peter-evans/create-or-update-comment` action documentation](https://github.com/marketplace/actions/create-or-update-comment). diff --git a/content/actions/guides/index.md b/content/actions/guides/index.md index 38acc21679..85043ac3f7 100644 --- a/content/actions/guides/index.md +++ b/content/actions/guides/index.md @@ -62,6 +62,13 @@ includeGuides: - /actions/learn-github-actions/migrating-from-gitlab-cicd-to-github-actions - /actions/learn-github-actions/migrating-from-jenkins-to-github-actions - /actions/learn-github-actions/migrating-from-travis-ci-to-github-actions + - /actions/guides/using-github-actions-for-project-management + - /actions/guides/closing-inactive-issues + - /actions/guides/scheduling-issue-creation + - /actions/guides/adding-labels-to-issues + - /actions/guides/commenting-on-an-issue-when-a-label-is-added + - /actions/guides/moving-assigned-issues-on-project-boards + - /actions/guides/removing-a-label-when-a-card-is-added-to-a-project-board-column --- @@ -87,3 +94,11 @@ includeGuides: + + + + + + + + diff --git a/content/actions/guides/moving-assigned-issues-on-project-boards.md b/content/actions/guides/moving-assigned-issues-on-project-boards.md new file mode 100644 index 0000000000..650cbea90d --- /dev/null +++ b/content/actions/guides/moving-assigned-issues-on-project-boards.md @@ -0,0 +1,75 @@ +--- +title: Moving assigned issues on project boards +intro: You can use {% data variables.product.prodname_actions %} to automatically move an issue to a specific column on a project board when the issue is assigned. +product: '{% data reusables.gated-features.actions %}' +versions: + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' +type: 'tutorial' +topics: + - 'Workflows' + - 'Project management' +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} +{% data reusables.actions.ae-beta %} +{% data reusables.actions.ae-self-hosted-runners-notice %} + +### Introduction + +This tutorial demonstrates how to use the [`alex-page/github-project-automation-plus` action](https://github.com/marketplace/actions/github-project-automation) to automatically move an issue to a specific column on a project board when the issue is assigned. For example, when an issue is assigned, you can move it into the `In Progress` column your project board. + +In the tutorial, you will first make a workflow file that uses the [`alex-page/github-project-automation-plus` action](https://github.com/marketplace/actions/github-project-automation). Then, you will customize the workflow to suit your needs. + +### Creating the workflow + +1. {% data reusables.actions.choose-repo %} +2. In your repository, choose a project board. You can use an existing project, or you can create a new project. For more information about creating a project, see "[Creating a project board](/github/managing-your-work-on-github/creating-a-project-board)." +3. {% data reusables.actions.make-workflow-file %} +4. Copy the following YAML contents into your workflow file. + + {% raw %} + ```yaml{:copy} + name: Move assigned card + on: + issues: + types: + - assigned + jobs: + move-assigned-card: + runs-on: ubuntu-latest + steps: + - uses: alex-page/github-project-automation-plus@v0.3.0 + with: + project: Docs Work + column: In Progress + repo-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + ``` + {% endraw %} +5. Customize the parameters in your workflow file: + - Change the value for `project` to the name of your project board. If you have multiple project boards with the same name, the `alex-page/github-project-automation-plus` action will act on all projects with the specified name. + - Change the value for `column` to the name of the column where you want issues to move when they are assigned. + - Change the value for `repo-token`: + 1. Create a personal access token with the `repo` scope. For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." + 1. Store this personal access token as a secret in your repository. For more information about storing secrets, see "[Encrypted secrets](/actions/reference/encrypted-secrets)." + 1. In your workflow file, replace `PERSONAL_ACCESS_TOKEN` with the name of your secret. +6. {% data reusables.actions.commit-workflow %} + +### Testing the workflow + +Whenever an issue in your repository is assigned, the issue will be moved to the specified project board column. If the issue is not already on the project board, it will be added to the project board. + +If your repository is user-owned, the `alex-page/github-project-automation-plus` action will act on all projects in your repository or user account that have the specified project name and column. Likewise, if your repository is organization-owned, the action will act on all projects in your repository or organization that have the specified project name and column. + +Test your workflow by assigning an issue in your repository. + +1. Open an issue in your repository. For more information, see "[Creating an issue](/github/managing-your-work-on-github/creating-an-issue)." +2. Assign the issue. For more information, see "[Assigning issues and pull requests to other GitHub users](/github/managing-your-work-on-github/assigning-issues-and-pull-requests-to-other-github-users)." +3. To see the workflow run that assigning the issue triggered, view the history of your workflow runs. For more information, see "[Viewing workflow run history](/actions/managing-workflow-runs/viewing-workflow-run-history)." +4. When the workflow completes, the issue that you assigned should be added to the specified project board column. + +### Next steps + +- To learn more about additional things you can do with the `alex-page/github-project-automation-plus` action, like deleting or archiving project cards, visit the [`alex-page/github-project-automation-plus` action documentation](https://github.com/marketplace/actions/github-project-automation). diff --git a/content/actions/guides/removing-a-label-when-a-card-is-added-to-a-project-board-column.md b/content/actions/guides/removing-a-label-when-a-card-is-added-to-a-project-board-column.md new file mode 100644 index 0000000000..7ab58f6308 --- /dev/null +++ b/content/actions/guides/removing-a-label-when-a-card-is-added-to-a-project-board-column.md @@ -0,0 +1,75 @@ +--- +title: Removing a label when a card is added to a project board column +intro: You can use {% data variables.product.prodname_actions %} to automatically remove a label when an issue or pull request is added to a specific column on a project board. +product: '{% data reusables.gated-features.actions %}' +versions: + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' +type: 'tutorial' +topics: + - 'Workflows' + - 'Project management' +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} +{% data reusables.actions.ae-beta %} +{% data reusables.actions.ae-self-hosted-runners-notice %} + +### Introduction + +This tutorial demonstrates how to use the [`andymckay/labeler` action](https://github.com/marketplace/actions/simple-issue-labeler) along with a conditional to remove a label from issues and pull requests that are added to a specific column on a project board. For example, you can remove the `needs review` label when project cards are moved into the `Done` column. + +In the tutorial, you will first make a workflow file that uses the [`andymckay/labeler` action](https://github.com/marketplace/actions/simple-issue-labeler). Then, you will customize the workflow to suit your needs. + +### Creating the workflow + +1. {% data reusables.actions.choose-repo %} +2. Choose a project that belongs to the repository. This workflow cannot be used with projects that belong to users or organizations. You can use an existing project, or you can create a new project. For more information about creating a project, see "[Creating a project board](/github/managing-your-work-on-github/creating-a-project-board)." +3. {% data reusables.actions.make-workflow-file %} +4. Copy the following YAML contents into your workflow file. + + {% raw %} + ```yaml{:copy} + name: Remove labels + on: + project_card: + types: + - moved + jobs: + remove_labels: + if: github.event.project_card.column_id == '12345678' + runs-on: ubuntu-latest + steps: + - name: remove labels + uses: andymckay/labeler@master + with: + remove-labels: "needs review" + ``` + {% endraw %} +5. Customize the parameters in your workflow file: + - In `github.event.project_card.column_id == '12345678'`, replace `12345678` with the ID of the column where you want to un-label issues and pull requests that are moved there. + + To find the column ID, navigate to your project board. Next to the title of the column, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} then click **Copy column link**. The column ID is the number at the end of the copied link. For example, `24687531` is the column ID for `https://github.com/octocat/octo-repo/projects/1#column-24687531`. + + If you want to act on more than one column, separate the conditions with `||`. For example, `if github.event.project_card.column_id == '12345678' || github.event.project_card.column_id == '87654321'` will act whenever a project card is added to column `12345678` or column `87654321`. The columns may be on different project boards. + - Change the value for `remove-labels` to the list of labels that you want to remove from issues or pull requests that are moved to the specified column(s). Separate multiple labels with commas. For example, `"help wanted, good first issue"`. For more information on labels, see "[Managing labels](/github/managing-your-work-on-github/managing-labels#applying-labels-to-issues-and-pull-requests)." +6. {% data reusables.actions.commit-workflow %} + +### Testing the workflow + +Every time a project card on a project in your repository moves, this workflow will run. If the card is an issue or a pull request and is moved into the column that you specified, then the workflow will remove the specified labels from the issue or a pull request. Cards that are notes will not be affected. + +Test your workflow out by moving an issue on your project into the target column. + +1. Open an issue in your repository. For more information, see "[Creating an issue](/github/managing-your-work-on-github/creating-an-issue)." +2. Label the issue with the labels that you want the workflow to remove. For more information, see "[Managing labels](/github/managing-your-work-on-github/managing-labels#applying-labels-to-issues-and-pull-requests)." +3. Add the issue to the project column that you specified in your workflow file. For more information, see "[Adding issues and pull requests to a project board](/github/managing-your-work-on-github/adding-issues-and-pull-requests-to-a-project-board)." +4. To see the workflow run that was triggered by adding the issue to the project, view the history of your workflow runs. For more information, see "[Viewing workflow run history](/actions/managing-workflow-runs/viewing-workflow-run-history)." +5. When the workflow completes, the issue that you added to the project column should have the specified labels removed. + +### Next steps + +- To learn more about additional things you can do with the `andymckay/labeler` action, like adding labels or skipping this action if the issue is assigned or has a specific label, visit the [`andymckay/labeler` action documentation](https://github.com/marketplace/actions/simple-issue-labeler). +- [Search GitHub](https://github.com/search?q=%22uses:+andymckay/labeler%22&type=code) for examples of workflows using this action. diff --git a/content/actions/guides/scheduling-issue-creation.md b/content/actions/guides/scheduling-issue-creation.md new file mode 100644 index 0000000000..d61c7f7ea6 --- /dev/null +++ b/content/actions/guides/scheduling-issue-creation.md @@ -0,0 +1,89 @@ +--- +title: Scheduling issue creation +intro: You can use {% data variables.product.prodname_actions %} to create an issue on a regular basis for things like daily meetings or quarterly reviews. +product: '{% data reusables.gated-features.actions %}' +versions: + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' +type: 'tutorial' +topics: + - 'Workflows' + - 'Project management' +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} +{% data reusables.actions.ae-beta %} +{% data reusables.actions.ae-self-hosted-runners-notice %} + +### Introduction + +This tutorial demonstrates how to use the [`imjohnbo/issue-bot` action](https://github.com/marketplace/actions/issue-bot-action) to create an issue on a regular basis. For example, you can create an issue each week to use as the agenda for a team meeting. + +In the tutorial, you will first make a workflow file that uses the [`imjohnbo/issue-bot` action](https://github.com/marketplace/actions/issue-bot-action). Then, you will customize the workflow to suit your needs. + +### Creating the workflow + +1. {% data reusables.actions.choose-repo %} +2. {% data reusables.actions.make-workflow-file %} +3. Copy the following YAML contents into your workflow file. + + {% raw %} + ```yaml{:copy} + name: Weekly Team Sync + on: + schedule: + - cron: 0 07 * * 1 + + jobs: + create_issue: + name: Create team sync issue + runs-on: ubuntu-latest + steps: + - name: Create team sync issue + uses: imjohnbo/issue-bot@v3.0 + with: + assignees: "monalisa, doctocat, hubot" + labels: "weekly sync, docs-team" + title: "Team sync" + body: | + ### Agenda + + - [ ] Start the recording + - [ ] Check-ins + - [ ] Discussion points + - [ ] Post the recording + + ### Discussion Points + Add things to discuss below + + - [Work this week](https://github.com/orgs/github/projects/3) + pinned: false + close-previous: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ``` + {% endraw %} +4. Customize the parameters in your workflow file: + - Change the value for `on.schedule` to dictate when you want this workflow to run. In the example above, the workflow will run every Monday at 7:00 UTC. For more information about scheduled workflows, see "[Scheduled events](/actions/reference/events-that-trigger-workflows#scheduled-events)." + - Change the value for `assignees` to the list of {% data variables.product.prodname_dotcom %} usernames that you want to assign to the issue. + - Change the value for `labels` to the list of labels that you want to apply to the issue. + - Change the value for `title` to the title that you want the issue to have. + - Change the value for `body` to the text that you want in the issue body. The `|` character allows you to use a multi-line value for this parameter. + - If you want to pin this issue in your repository, set `pinned` to `true`. For more information about pinned issues, see "[Pinning an issue to your repository](/articles/pinning-an-issue-to-your-repository)." + - If you want to close the previous issue generated by this workflow each time a new issue is created, set `close-previous` to `true`. The workflow will close the most recent issue that has the labels defined in the `labels` field. To avoid closing the wrong issue, use a unique label or combination of labels. +5. {% data reusables.actions.commit-workflow %} + +### Expected results + +Based on the `schedule` parameter (for example, every Monday at 7:00 UTC), your workflow will create a new issue with the assignees, labels, title, and body that you specified. If you set `pinned` to `true`, the workflow will pin the issue to your repository. If you set `close-previous` to true, the workflow will close the most recent issue with matching labels. + +{% data reusables.actions.schedule-delay %} + +You can view the history of your workflow runs to see this workflow run periodically. For more information, see "[Viewing workflow run history](/actions/managing-workflow-runs/viewing-workflow-run-history)." + +### Next steps + +- To learn more about additional things you can do with the `imjohnbo/issue-bot` action, like rotating assignees or using an issue template, see the [`imjohnbo/issue-bot` action documentation](https://github.com/marketplace/actions/issue-bot-action). +- [Search GitHub](https://github.com/search?q=%22uses%3A+imjohnbo%2Fissue-bot%22&type=code) for examples of workflows using this action. diff --git a/content/actions/guides/using-github-actions-for-project-management.md b/content/actions/guides/using-github-actions-for-project-management.md new file mode 100644 index 0000000000..d023cb4e2c --- /dev/null +++ b/content/actions/guides/using-github-actions-for-project-management.md @@ -0,0 +1,40 @@ +--- +title: Using GitHub Actions for project management +intro: You can use {% data variables.product.prodname_actions %} to automate many of your project management tasks. +product: '{% data reusables.gated-features.actions %}' +versions: + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' +type: 'overview' +topics: + - 'Project management' +--- + +You can use {% data variables.product.prodname_actions %} to automate your project management tasks by creating workflows. Each workflow contains a series of tasks that are performed automatically every time the workflow runs. For example, you can create a workflow that runs every time an issue is created to add a label, leave a comment, and move the issue onto a project board. + +### When do workflows run? + +You can configure your workflows to run on a schedule or be triggered when an event occurs. For example, you can set your workflow to run when someone creates an issue in a repository. + +Many workflow triggers are useful for automating project management. + +- An issue is opened, assigned, or labeled. +- A comment is added to an issue. +- A project card is created or moved. +- A scheduled time. + +For a full list of events that can trigger workflows, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." + +### What can workflows do? + +Workflows can do many things, such as commenting on an issue, adding or removing labels, moving cards on project boards, and opening issues. + +You can learn about using {% data variables.product.prodname_actions %} for project management by following these tutorials, which include example workflows that you can adapt to meet your needs. + +- "[Adding labels to issues](/actions/guides/adding-labels-to-issues)" +- "[Removing a label when a card is added to a project board column](/actions/guides/removing-a-label-when-a-card-is-added-to-a-project-board-column)" +- "[Moving assigned issues on project boards](/actions/guides/moving-assigned-issues-on-project-boards)" +- "[Commenting on an issue when a label is added](/actions/guides/commenting-on-an-issue-when-a-label-is-added)" +- "[Closing inactive issues](/actions/guides/closing-inactive-issues)" +- "[Scheduling issue creation](/actions/guides/scheduling-issue-creation)" diff --git a/content/actions/reference/events-that-trigger-workflows.md b/content/actions/reference/events-that-trigger-workflows.md index 9f3e2327e2..0755a7a807 100644 --- a/content/actions/reference/events-that-trigger-workflows.md +++ b/content/actions/reference/events-that-trigger-workflows.md @@ -43,11 +43,7 @@ The following steps occur to trigger a workflow run: The `schedule` event allows you to trigger a workflow at a scheduled time. -{% note %} - -Note: Due to load, the `schedule` event may be delayed - -{% endnote %} +{% data reusables.actions.schedule-delay %} #### `schedule` diff --git a/data/reusables/actions/choose-repo.md b/data/reusables/actions/choose-repo.md new file mode 100644 index 0000000000..362868f66b --- /dev/null +++ b/data/reusables/actions/choose-repo.md @@ -0,0 +1 @@ +Choose a repository where you want to apply this project management workflow. You can use an existing repository that you have write access to, or you can create a new repository. For more information about creating a repository, see "[Creating a new repository](/articles/creating-a-new-repository)." \ No newline at end of file diff --git a/data/reusables/actions/commit-workflow.md b/data/reusables/actions/commit-workflow.md new file mode 100644 index 0000000000..fe2ce9b187 --- /dev/null +++ b/data/reusables/actions/commit-workflow.md @@ -0,0 +1 @@ +Commit your workflow file to the default branch of your repository. For more information, see "[Creating new files](/github/managing-files-in-a-repository/creating-new-files)." \ No newline at end of file diff --git a/data/reusables/actions/make-workflow-file.md b/data/reusables/actions/make-workflow-file.md new file mode 100644 index 0000000000..82be838ded --- /dev/null +++ b/data/reusables/actions/make-workflow-file.md @@ -0,0 +1 @@ +In your repository, create a file called `.github/workflows/YOUR_WORKFLOW.yml`, replacing `YOUR_WORKFLOW` with a name of your choice. This is a workflow file. For more information about creating new files on GitHub, see "[Creating new files](/github/managing-files-in-a-repository/creating-new-files)." \ No newline at end of file diff --git a/data/reusables/actions/schedule-delay.md b/data/reusables/actions/schedule-delay.md new file mode 100644 index 0000000000..ecbd927178 --- /dev/null +++ b/data/reusables/actions/schedule-delay.md @@ -0,0 +1,5 @@ +{% note %} + +Note: The `schedule` event can be delayed during periods of high loads of {% data variables.product.prodname_actions %} workflow runs. + +{% endnote %} From f2d8ccb712abf73c833861c136c184e5823d1ecf Mon Sep 17 00:00:00 2001 From: Martin Lopes Date: Wed, 17 Mar 2021 10:59:43 +1000 Subject: [PATCH 20/37] Add missing Audit Log events for GitHub Actions (#17616) * Added placeholders for missing events. * Added Audit events * Moved event * Fixed links * Fixed links * Fixed versioning * Rephrased description * Revised description of runner_group_runners_updated * Added versioning updates, future-proofing. * Update based on tech review * Apply suggestions from code review Co-authored-by: Laura Coursen * Apply suggestions from code review Co-authored-by: Laura Coursen * Added link for runner_group_updated event * Apply suggestions from code review Co-authored-by: Laura Coursen * Clarified description of `runner_group_runner_removed` * Removed link for enterprise versions of event. * Update security-hardening-for-github-actions.md * Update actions-audit-events-workflow.md Co-authored-by: Laura Coursen --- .../security-hardening-for-github-actions.md | 30 ++++++++++++++++--- ...ing-the-audit-log-for-your-organization.md | 15 +++++++++- .../actions-audit-events-for-enterprise.md | 8 +++-- 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/content/actions/learn-github-actions/security-hardening-for-github-actions.md b/content/actions/learn-github-actions/security-hardening-for-github-actions.md index 5880ba20fd..d5b53f25cf 100644 --- a/content/actions/learn-github-actions/security-hardening-for-github-actions.md +++ b/content/actions/learn-github-actions/security-hardening-for-github-actions.md @@ -123,6 +123,24 @@ For example, you can use the audit log to track the `org.update_actions_secret` The following tables describe the {% data variables.product.prodname_actions %} events that you can find in the audit log. For more information on using the audit log, see "[Reviewing the audit log for your organization](/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization#searching-the-audit-log)." +{% if currentVersion == "free-pro-team@latest" %} +#### Events for environments + +| Action | Description +|------------------|------------------- +| `environment.create_actions_secret` | Triggered when a secret is created in an environment. For more information, see ["Environment secrets](/actions/reference/environments#environment-secrets)." +| `environment.delete` | Triggered when an environment is deleted. For more information, see ["Deleting an environment](/actions/reference/environments#deleting-an-environment)." +| `environment.remove_actions_secret` | Triggered when a secret is removed from an environment. For more information, see ["Environment secrets](/actions/reference/environments#environment-secrets)." +| `environment.update_actions_secret` | Triggered when a secret in an environment is updated. For more information, see ["Environment secrets](/actions/reference/environments#environment-secrets)." +{% endif %} + +{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} +#### Events for configuration changes +| Action | Description +|------------------|------------------- +| `repo.actions_enabled` | Triggered when {% data variables.product.prodname_actions %} is enabled for a repository. Can be viewed using the UI. This event is not visible when you access the audit log using the REST API. For more information, see "[Using the REST API](#using-the-rest-api)." +{% endif %} + #### Events for secret management | Action | Description |------------------|------------------- @@ -135,11 +153,15 @@ The following tables describe the {% data variables.product.prodname_actions %} #### Events for self-hosted runners | Action | Description -|------------------|------------------- +|------------------|-------------------{% if currentVersion ver_gt "enterprise-server@2.21" %}{% else %} | `enterprise.register_self_hosted_runner` | Triggered when a new self-hosted runner is registered. For more information, see "[Adding a self-hosted runner to an enterprise](/actions/hosting-your-own-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-an-enterprise)." -| `enterprise.self_hosted_runner_updated` | Triggered when the runner application is updated. Can be viewed using the REST API and the UI; not visible in the JSON/CSV export. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners#about-self-hosted-runners)." +| `enterprise.remove_self_hosted_runner` | Triggered when a self-hosted runner is removed. +| `enterprise.runner_group_runners_updated` | Triggered when a runner group's list of members is updated. For more information, see "[Set self-hosted runners in a group for an organization](/rest/reference/actions#set-self-hosted-runners-in-a-group-for-an-organization)." +| `enterprise.self_hosted_runner_updated` | Triggered when the runner application is updated. Can be viewed using the REST API and the UI. This event is not included when you export the audit log as JSON data or a CSV file. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners#about-self-hosted-runners)" and "[Reviewing the audit log for your organization](/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization#exporting-the-audit-log)."{% endif %} | `org.register_self_hosted_runner` | Triggered when a new self-hosted runner is registered. For more information, see "[Adding a self-hosted runner to an organization](/actions/hosting-your-own-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-an-organization)." | `org.remove_self_hosted_runner` | Triggered when a self-hosted runner is removed. For more information, see [Removing a runner from an organization](/actions/hosting-your-own-runners/removing-self-hosted-runners#removing-a-runner-from-an-organization). +| `org.runner_group_runners_updated` | Triggered when a runner group's list of members is updated. For more information, see "[Set self-hosted runners in a group for an organization](/rest/reference/actions#set-self-hosted-runners-in-a-group-for-an-organization)." +| `org.runner_group_updated` | Triggered when the configuration of a self-hosted runner group is changed. For more information, see "[Changing the access policy of a self-hosted runner group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#changing-the-access-policy-of-a-self-hosted-runner-group)." | `org.self_hosted_runner_updated` | Triggered when the runner application is updated. Can be viewed using the REST API and the UI; not visible in the JSON/CSV export. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners#about-self-hosted-runners)." | `repo.register_self_hosted_runner` | Triggered when a new self-hosted runner is registered. For more information, see "[Adding a self-hosted runner to a repository](/actions/hosting-your-own-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-a-repository)." | `repo.remove_self_hosted_runner` | Triggered when a self-hosted runner is removed. For more information, see "[Removing a runner from a repository](/actions/hosting-your-own-runners/removing-self-hosted-runners#removing-a-runner-from-a-repository)." @@ -150,13 +172,13 @@ The following tables describe the {% data variables.product.prodname_actions %} |------------------|------------------- | `enterprise.runner_group_created` | Triggered when a self-hosted runner group is created. For more information, see "[Creating a self-hosted runner group for an enterprise](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#creating-a-self-hosted-runner-group-for-an-enterprise)." | `enterprise.runner_group_removed` | Triggered when a self-hosted runner group is removed. For more information, see "[Removing a self-hosted runner group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#removing-a-self-hosted-runner-group)." -| `enterprise.runner_group_runner_removed` | Triggered when a self-hosted runner is removed from a group. +| `enterprise.runner_group_runner_removed` | Triggered when the REST API is used to remove a self-hosted runner from a group. | `enterprise.runner_group_runners_added` | Triggered when a self-hosted runner is added to a group. For more information, see "[Moving a self-hosted runner to a group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group)." | `enterprise.runner_group_updated` |Triggered when the configuration of a self-hosted runner group is changed. For more information, see "[Changing the access policy of a self-hosted runner group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#changing-the-access-policy-of-a-self-hosted-runner-group)." | `org.runner_group_created` | Triggered when a self-hosted runner group is created. For more information, see "[Creating a self-hosted runner group for an organization](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#creating-a-self-hosted-runner-group-for-an-organization)." | `org.runner_group_removed` | Triggered when a self-hosted runner group is removed. For more information, see "[Removing a self-hosted runner group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#removing-a-self-hosted-runner-group)." | `org.runner_group_runners_added` | Triggered when a self-hosted runner is added to a group. For more information, see "[Moving a self-hosted runner to a group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group)." -| `org.runner_group_runner_removed` | Triggered when a self-hosted runner is removed from a group. +| `org.runner_group_runner_removed` | Triggered when the REST API is used to remove a self-hosted runner from a group. For more information, see "[Remove a self-hosted runner from a group for an organization](/rest/reference/actions#remove-a-self-hosted-runner-from-a-group-for-an-organization)." #### Events for workflow activities diff --git a/content/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization.md index d8e83edc9d..82cdcf1223 100644 --- a/content/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization.md @@ -252,7 +252,17 @@ An overview of some of the most common actions that are recorded as events in th {% endif %} {% if currentVersion == "free-pro-team@latest" %} +#### `environment` category actions +| Action | Description +|------------------|------------------- +| `create_actions_secret` | Triggered when a secret is created in an environment. For more information, see ["Environment secrets](/actions/reference/environments#environment-secrets)." +| `delete` | Triggered when an environment is deleted. For more information, see ["Deleting an environment](/actions/reference/environments#deleting-an-environment)." +| `remove_actions_secret` | Triggered when a secret is removed from an environment. For more information, see ["Environment secrets](/actions/reference/environments#environment-secrets)." +| `update_actions_secret` | Triggered when a secret in an environment is updated. For more information, see ["Environment secrets](/actions/reference/environments#environment-secrets)." +{% endif %} + +{% if currentVersion == "free-pro-team@latest" %} #### `git` category actions {% note %} @@ -360,8 +370,10 @@ For more information, see "[Managing the publication of {% data variables.produc | `revoke_sso_session` | Triggered when an organization owner revokes a member's SAML session. For more information, see "[Viewing and managing a member's SAML access to your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-and-managing-a-members-saml-access-to-your-organization#viewing-and-revoking-a-linked-identity)." {% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} | `runner_group_created` | Triggered when a self-hosted runner group is created. For more information, see "[Creating a self-hosted runner group for an organization](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#creating-a-self-hosted-runner-group-for-an-organization)." | `runner_group_removed` | Triggered when a self-hosted runner group is removed. For more information, see "[Removing a self-hosted runner group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#removing-a-self-hosted-runner-group)." +| `runner_group_updated` | Triggered when the configuration of a self-hosted runner group is changed. For more information, see "[Changing the access policy of a self-hosted runner group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#changing-the-access-policy-of-a-self-hosted-runner-group)." | `runner_group_runners_added` | Triggered when a self-hosted runner is added to a group. For more information, see [Moving a self-hosted runner to a group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group). -| `runner_group_runner_removed` | Triggered when a self-hosted runner is removed from a group. {% endif %}{% if currentVersion == "free-pro-team@latest"%}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} +| `runner_group_runner_removed` | Triggered when the REST API is used to remove a self-hosted runner from a group. For more information, see "[Remove a self-hosted runner from a group for an organization](/rest/reference/actions#remove-a-self-hosted-runner-from-a-group-for-an-organization)." +| `runner_group_runners_updated`| Triggered when a runner group's list of members is updated. For more information, see "[Set self-hosted runners in a group for an organization](/rest/reference/actions#set-self-hosted-runners-in-a-group-for-an-organization)."{% endif %}{% if currentVersion == "free-pro-team@latest"%}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} | `self_hosted_runner_updated` | Triggered when the runner application is updated. Can be viewed using the REST API and the UI; not visible in the JSON/CSV export. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners#about-self-hosted-runners)."{% endif %} | `unblock_user` | Triggered when an organization owner [unblocks a user from an organization](/articles/unblocking-a-user-from-your-organization).{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} | `update_actions_secret` |Triggered when a {% data variables.product.prodname_actions %} secret is updated.{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" or currentVersion == "github-ae@latest" %} @@ -473,6 +485,7 @@ For more information, see "[Managing the publication of {% data variables.produc | Action | Description |------------------|------------------- | `access` | Triggered when a user [changes the visibility](/github/administering-a-repository/setting-repository-visibility) of a repository in the organization. +| `actions_enabled` | Triggered when {% data variables.product.prodname_actions %} is enabled for a repository. Can be viewed using the UI. This event is not included when you access the audit log using the REST API. For more information, see "[Using the REST API](#using-the-rest-api)." | `add_member` | Triggered when a user accepts an [invitation to have collaboration access to a repository](/articles/inviting-collaborators-to-a-personal-repository). | `add_topic` | Triggered when a repository admin [adds a topic](/articles/classifying-your-repository-with-topics) to a repository.{% if currentVersion == "free-pro-team@latest" %} | `advanced_security_disabled` | Triggered when a repository owner disables {% data variables.product.prodname_GH_advanced_security %}. For more information, see "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)." diff --git a/data/reusables/actions/actions-audit-events-for-enterprise.md b/data/reusables/actions/actions-audit-events-for-enterprise.md index fc57d1e2da..2c0c30d196 100644 --- a/data/reusables/actions/actions-audit-events-for-enterprise.md +++ b/data/reusables/actions/actions-audit-events-for-enterprise.md @@ -1,10 +1,12 @@ | Action | Description |------------------|------------------- -| `register_self_hosted_runner` | Triggered when a new self-hosted runner is registered. For more information, see "[Adding a self-hosted runner to an enterprise](/actions/hosting-your-own-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-an-enterprise)." -| `runner_group_created` | Triggered when a self-hosted runner group is created. For more information, see "[Creating a self-hosted runner group for an enterprise](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#creating-a-self-hosted-runner-group-for-an-enterprise). +| `remove_self_hosted_runner` | Triggered when a self-hosted runner is removed. +| `register_self_hosted_runner` | Triggered when a new self-hosted runner is registered. For more information, see "[Adding self-hosted runners](/actions/hosting-your-own-runners/adding-self-hosted-runners)." +| `runner_group_created` | Triggered when a self-hosted runner group is created. For more information, see "[About self-hosted runner groups](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#about-self-hosted-runner-groups). | `runner_group_removed` | Triggered when a self-hosted runner group is removed. For more information, see "[Removing a self-hosted runner group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#removing-a-self-hosted-runner-group)." -| `runner_group_runner_removed` | Triggered when a self-hosted runner is removed from a group. +| `runner_group_runner_removed` | Triggered when the REST API is used to remove a self-hosted runner from a group. | `runner_group_runners_added` | Triggered when a self-hosted runner is added to a group. For more information, see "[Moving a self-hosted runner to a group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group)." +| `runner_group_runners_updated` | Triggered when a runner group's list of members is updated. For more information, see "[Set self-hosted runners in a group for an organization](/rest/reference/actions#set-self-hosted-runners-in-a-group-for-an-organization)." | `runner_group_updated` | Triggered when the configuration of a self-hosted runner group is changed. For more information, see "[Changing the access policy of a self-hosted runner group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#changing-the-access-policy-of-a-self-hosted-runner-group)." | `self_hosted_runner_updated` | Triggered when the runner application is updated. Can be viewed using the REST API and the UI; not visible in the JSON/CSV export. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners#about-self-hosted-runners)." From 54ef0fd9c7529c53bcd24a0bec4c9f26c176e84c Mon Sep 17 00:00:00 2001 From: Ethan Palm <56270045+ethanpalm@users.noreply.github.com> Date: Tue, 16 Mar 2021 21:31:57 -0400 Subject: [PATCH 21/37] [Ready to ship, March 16] New types of push notifications for GitHub for mobile (beta) (#18250) * Update "Configuring notifications" article * Update "About notifications" article * Update conceptual info * Update mobile screenshots * Add reviewer feedback * Adjust image sizes --- .../notifications-v2/mobile-watch-button.png | Bin 0 -> 153466 bytes .../mobile-watch-settings.png | Bin 0 -> 183373 bytes .../about-notifications.md | 2 +- .../configuring-notifications.md | 63 +++++++++++++----- .../viewing-your-subscriptions.md | 20 ------ .../mobile/push-notifications-on-ghes.md | 2 +- 6 files changed, 50 insertions(+), 37 deletions(-) create mode 100644 assets/images/help/notifications-v2/mobile-watch-button.png create mode 100644 assets/images/help/notifications-v2/mobile-watch-settings.png diff --git a/assets/images/help/notifications-v2/mobile-watch-button.png b/assets/images/help/notifications-v2/mobile-watch-button.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a3fa3af0742425977da5df18ad29586808044e GIT binary patch literal 153466 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 z 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
#Z7>Qu+)kNP;YyLz%Z3r( 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
W%7|r31ru)m-I!sADYc0LXc3uEN@s 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 z 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

c+1l zkBQ*p>q}@7&)CoLx5ZN4U%~#5xo~}s9VcEG{C1IUyge?TRoct4A0C>o1?mCm7Km+y zCx#4{tgLpoiklLQMv&`HJL`yPA8*{akqtwA$h5-Ln?P2+@nw>yx%eYWwED8PMqsX^ z(JjmDq)FAP;j5hsE%$zYoHDBCKA=8m^T&qzlU&WOSkMrc!&Oe^6PC#xWQl9VqnMug z!ox{JA8_fUQNSpKXu(b*eK~xyHUjg9=F4R_FR~ihv>AUeiHi%L2NaiAX_SbnMCIWOOT`p&?Dq`#cQ&Le#i!XQbKkcVv)}0E zPrROezVU_H2A9lbxbWU7MBCIzvyXwGIaQZ1pS~SsWaGIFmW(7J(T9VDePlxL0in{< zx~o!FQts)BkBW1Z6RN`+ifC)rtDSB3l@B6k7s%`huF{=%)N1HLg0lC})nb%Y@hvPH zHzsp_;V|^OT;pVt^g7qsv8q?Ymk_XwN_rDAX$Ho1{$MlXJu>WWk}%Xq%xk1|x!b#4 z;fmr`_YStJX9Y&>f-aTyrIQcrQ4cA2;W^aiIx#IPR;>GI+5Ag(Hc#r)RUw#iue&Oa zc-VFiyvA&q_!Tx+QQ;Um{oT7p-05daa1d-K-@H7`ai(I*ipI|QpxvHAipfiy>D#gA zBj544M*Nt8hY~IN*S~DPnIFlN)OHJObiCh%uv5jK6sy)vB$|;?`O$4*)aFFZ`n9_G z^N0%TihQbipU$f4Y9~+i@O;0S)U8+u+c?9ExW8Rof#L^o{K#9~?;V&RvG zA-iaD9AylQ>%@#{f~k?8B6ubcRZhF7UN;Ty^pU%d2IwrJ5`4cZ$Sz}iZ0vDTJd~Hg z{zJ1@I5xWZQ%m|QorG$&eCig03MpZ)en|W{(q8>)9i@^aykJ@hZ~ZHf`i@e$m!bGPRnxVO!`IAcRI%?@Z>gv>@eVZ}^Ri zf;i)NPhBT9jkW_B*Q>)gi~#1GMs_wib60wBm$Ax|g54t!L+b|*ix zrpkPI^qHR2B$A2RsBUY}eW*>{@qkP3kw_SsQgXW6Fscjv#Yst5Gz=ml;UI|D?S4|^ zuiv+q*s>(oI=*ANN<@>9BjI}HMDHdEF@?ic2-S5~P!F;v(ztHrM)cn%&!yw)>UV>< zAVp!*Iehtwmus{V+eRq$*&=;QbILq|f5j*JUFSxPzeYBE5ke;F%6cICo0K%Dz5Tjh+lZ4HB9We55{EvrX(6wcu2}j^BO#-G$+Jsz zHJ?k?l&O0=``fxEORjJv2~{&Zf*wM@uv>$U$d_UgX1=l4B`vM4C%REhz|@2Uk4H#J zq^-|TIqQ(e%C=sJ@e3z}8Op3fvj2C+{({;?AnD_{9_EK{h;OmZH4`S%(e{vblgfD4 z2#LjqK?*dr$~k%LU$p>sjqj2j{^idI!yL*px`eyEqa}vmPq#Da)F24w4 z_A;9tVv1M^>M`}yN}(*TTT36AjslwoEionfjKNe!HC0T(8X88H+abvLnw~Lz2Z?rf>LZJBeIv-pv8_Uda3B_`CWwW6{TFA= zgD_aSq=OT_1}y+3mnS>+P()%pQ)*JC2aebmy8Ju{EO&<&wkquB6UQ4p25C8wjjJ7r z4+|}SI;l`!pB8OklD{B z)IGB9wmxNj2n!nd*l*B*RE2@uNUe`xBvi9p^}$wocS^=pvSvPR=T3;0qD36lcZniT zO2sB>wxZ{Lau9h1HE4RKc2`v!qG&>-5sk$B14P6)v2tKGw)iFno0*qH0`Pzv4} zJSbCzS}@;(zU1KKVm>*DGP*4EKJg?Bbl;ft;Ko1+(R`Z6Vfa3!e7pS#jHph5|9(@N zb7muTf^B_MB-(l`fN`W6MD zY9B^YzwEA+W#8mlK&X*bylniU0cPR(zDw&m`{5fsX(6_se$8#^c3iS6?|MRN37h$c z!}s#xU!UI=Zt9FmluWxy6fFt#v$Ml#t~8Qf_UJUKwlw>vx7>^cc*v6hn^0 z%jpx>_e^o7vqWve`nD+gjuG`t!FK-|69^^soO-6Hoqp&(D`sTj=(7yvsLkw*PHHp|i_FrmU z^q*CPrJp79(E1ZI>fly{Ny_;;3!kPfjE2>ZqX%8V(19E4bgQ6DBt- zK+d~2Kl)Wr{hNd+R);^nah~#gU;#q)U{MPT3s1~%`HOH~PFr2gUiB;6*W>XEp&!Am zOs8zw?s!~~GN7yKnIg$I>N(z%Z{Lq1Wq+@+t_jKD({rkCUXS08x-tDdy`R_!bHrZ5 z{2+T{zq7o14x5=l8s~Xk9obwR=Ob#Zw6!n!T!vx~l8uH+ww3v2NBkgtC$cv$+9~AW zO7MupQV7=zM51+&wQ|0--+~0^(gAX1m8V0~IT=EYSV)YlK!mkjGe()e7kw=`hr+!^ zIF>7wzb#j7yKdR!_>(F*%d|?nh8}ZQyFdP+Cy?wx(LWqGEDk^n?(BT7grz^v$X?9+ z+?^&`V~I#TN=1o??et^vweeA>Q)?>RDiLkJ7gE2tc1NxsYR3B~H)bzqoF%iQq7OF5 zQSj;%CZHNBM5$gmei|z`ByZmBsPsIE zg9f(jrkCO5)d_b=*UW#*XBin5lS}gRO@mO*jKO~{^l2-QSiT)NCPXKF8FN7REfmlN z`%Q7F>K5GcIN9B)_4)Q{#+2kLBRMiD6-&0ofv?aUEidVnHt=;<=kB46qf+klJGDgV z_&@fEL(jT=uFxX*UvQ5gnx)qCgT9m~h|DSSPqf{^3=HNv934D1UldhYMojba%U_k< z`2c$e-b}l*j%t;V+r@hIF!bfq9~b?}D<#+KmMXb2dXew&OYy9XIaDn^Ir96(q0BbD zk&g?EQCq$E^i5N}tILV8Iz4IjPC7PGaw>dw6zcA#D}XWpJ`0h05~# z428p6K!k%USFf{fwzk=ah7$dF6EXl(>}7e7Zs*swx2%o%JfC^Emd4M=>il*EJtC6(-B`#;V~`B_49lW0bAXyz_IvdE#(27M#6to8=QoW-7{(F4H;uGc+-6(6UVIQbLN!M!KFR3mjFRlf zAFk;H1SZi1yEfnT|KUxEZrGI@<(KbvN$AMMEVuRBK>p(L$|$}+v`$$ z=7l{7p*Hkpz^T<^6`UAm@8zU{wu!h?)r@I3K@54-`(-yURC1t2F zxD}QZ)13$%n$kwq+K6|^a2@`QjYQ)#Cp?+FQ#aA~P3Nr6Ag6U-=5b3>i`mrNYT{LG zr}~8I`w98a03{RM&gf06o`ll+q)I1QmY(P0iKO9156Sg8^Yj{_e(0-)ZkJ@=A zxV4-yx#D}U6Eql=6xHg|wZfYx3&eYyv-Tlh;qzm?Tl4BED>muVk1xEcR1Cbyz}5^O zgI8q4hG#(C*q9j39rUe8C6C`m3cn}0ZgkY_Jn^RE6D~1+$Gz0_7a!go}2-jN4;3rPH%pRjXSHhr;*#)Sw7UqM;!-{f9y*aD%KTE?;;d*m895F0Duff{ac$pD<&h+c^>o<~SWHo+v1#$nzM zq!lSZNm*5D+1w8SkfWpR^lg0g2|msVkM?kqYhy;j7~&bizDZQN7Eolg+LR%Sq*>DQ zOl~SF3p24j@#@t)*1iyx4TGWx;O=!ani&YjPeJMDMB zRWr`)m`A0drNYSuwQZ1vnpR}_wpSg#YL>Om_r?#Ij0U1=weJS@UN2$Oia?FPV=sk{ zb=i@T3sbL3$7J9%iAcw`v(Tu=T{Vx2ai%Sq=CL)t8yW#gGp?ybCn;)m^XzqI`-uWQ z@a57XU*ys90tKE)MTsbuM(W#Xt-&2r##iP7Vx2c69Fb;GFbZ~T>6i)86OA?X^;h-J zr~1}IeKSJ2=txMaA)L$&vbE}8X9 zzYWLU`jzo&Uu80O1KV^KT^}5aLnmtHFD6In6V(rABZIn&!_G&amD5 zz?u7OAA9gzGalcU?w1autPzZGxfBR0LdRSZ7vTmm$pcb_c6@re)w`o?*#C6l3@-JHEMm`6;` zF?eHumbrgKBmb4->eVYNL{XsH{nkMA!FdiUa~kPq5nNVAzK0{R2fJc}*W7yI(8Fe& zz8u4gu}F*C$v1W_ir*9T{xsdt@#WQvh8xr5G?8%T5GVVp+4;k3Qn!UTY49&&2TElO z1G59~9x+3l*J|Db&e~K>EsrM>ZK93iOk#TQiW3~ElkOzHK2`Wn+NM+lpJRU7c}FgJ zm&d7~)}v%Bv*oYsCGiOkCi^Bt{ZAAd^IJb7ZpL*Co>ZIVqd2H5xL@*JW*D2+{7|7>LcbquI#M$U3!EkDI;!9M@o+ z+!hxE3Z#SZM~=juA-v?(E#euzNlA_)frD0Fb-i_BytPZ_m;( z$&Mk{E_?kAJDJ4bfv*|BO)IeX_qHwN5E|z8>7O3B4^J>wXS~~mxJ#*m7#u^%6msC? z#*jT_-*X!7oqe$gk3zGMe_FtSL->Pyu`eTmvE0U+}NTywBqj*Px1fyc}WRfxL^F`f)Kq>U8VxA~Bv z5zuOmox90Mgt2pf{#QPl?o*U7#oBsLf~Y)v6^3#z=fYZ%r^sDVcspouvw4pD2e>No zm>8*VdR-qw{tmx0Mbbx4Q|Ja6lAF8W^K`e>GcoMuq7JR!q6}DwT{iXoxnAhR5rO+kbt`=l|=prX2|#wPD!IoIQaNMLPwV zb7Mm2LADJy<5skjSwwJ=)GWBe$6@Y$JB(Z|*17P7{X+u~3Oi7j8{u?x6f)B~^6pN? zRgYeG$m{bu@BHwi{ESiWvRHi3HK)-0GlILU+YPC$UDS{lff45ZF+y*(Wd@*xsB0g zly5CO0BMWZ+1mq|kkCOwJGL`Q)IBtr(9p zrO@@nhNOyQweEZVR^IsZB)K%Hy5 zgU%AcNHM~vvFYJd?*e0SN<>oI{OX*CAX(AimGX*7BD>@u8A?OdaSd5Ot(DL427s^! zsC{CG1)S#PY;~+@$=<0!m%eUcJc1z&yoJuE-wJFRV|f6&oRK(S;d&}@?c=w4qFjaF zBW=ig#FdC$^1(a5Q1K6(w%%SVjBa~Sfx*%gskt(@sL0vpQPC9b#?X8nkW374+%(cJ zV}$8hE8I3h&CO!Op^px{_*$p7f3A&_yZnC=Yw%}DJff2PwM`a`u zzdi79d&D_Vrz==1a6qIV!%9J|A4_#lMK_fLUU2PRkV8h~1_Aoae?Bqx!Nk^-N$ZJc z_FzFS5Ns>W+z0`xADnD<+2GJ35-h3nQsW(>2DV@{NdXMIO>D$0Yz)0lcoZ=x{X5^J zmK(@q(JwpM9q^lj`v2Uc#PL@cCz02J|MbkY$2`EXzU|Tj=PSSap?`gLuMv2vH$IE& z4_PMve$_um{@-KuOW^)3SN~Xc|GyOmg}zNS!~mWACB;jM36p;8cE8le|=U^1njMfcJE66>0OV18T5E5OQqk0!T$B4 zd!LE`#Z=VWH~%k9^*dz;GztK0=i)B@v5!T+P+BdX`;0Xp z(NF+T&qXcgew%pmuLeFf1u(XM57fU0>faI-@c(e>tr;C%XLZpyIp@l3qi-L*A_D-N zHEPYv-1M%$(!ABIm6!_+L|*=(yh4D(n&Fzh2qx_1j#yM15fB_5cDT2i`iu z?JsCvNP=B)X}xz9oI}0hz^|{q)k1)03w3Um{C)KbGmT#v@S$L-I&U3jOtBVo;qn6w zsnZj^WmKxQ9g_l>!wNmV zFr0NgIA>)N03`re6KidJ16mHSk3Je0^dSYnCxT0I-Qj=Ag1)y&hbtjJoVgRVT?mi? z{@-I@=l20RVcOa#X9O(V2DcN@{Sd~qoaN@a6XnyV+_ZHrOnmENSdC9wt{0rTZ3Hlb z$dh5C<3{g^m4C}A0(#aK0%*$kvZ1$0%r+*8xxl`_*D$Bq$|whY96$zj?b^~S)gE$( z;gW!Sd}HBe01zGDVa7B!GU0tYjB+jmB$$83H||X|FhaRNn7G7fU8u8_;hfNLdLvVP zeyRGL3(m(rIvoIn@4t#ZA0;$=CqP+t!YHoUsYp9FU&JV9{G~=4a5wW#--v6E6q8>v zhcT@_p>r;p7Y^LN*J~X6ydD6Ih0py1CON?q=Kfe@xFfTiMzxOPVdC-?YOStMdTf9^a)(M~ADNmZxTrS0&@gO}`*+)% zUxv>tgav?`FSos=15kpReC5WfcB`LqYJ>gDtx*`BRUoq!* z4Fh&PPGH%r;-Om@$Q*`a?eEm7AE2 z004g-)74lQ!}OI4)v9H%S?xeC4OFSA(j?$E|F)iut(I9mSnd-C*=wumYYdE;kJBRh z0D!Sz##6hPZ``eoUvz$Why>i1K}BF8f?9$0b>0qhU;0a<>F1t? z@bKDA4W9rJ|F=KuX0Cv95U}qtl(O8VTR&YHGGYPfSbZ!H$)Z)EwtBu+tvn$BURo3#nVEVsQE{n3iz3mVF;dFpyd{E z%035o!*C>^SLZY7gFby}9Y`{ZuFB*^CAToHmDV!zC!rLkW3UE?{Eg;<7>G2&sWR8O znB=b^|ShQ}5yp`$zK*Uv-xrPW541@J*rM#pp2}G=k;(_E13*4!Q-e=2 z+Zc{5(plocIb5j@J7l`NkQHN6_WH{(Tu;01_rmZ_?5y2RP%bMo;{J!eF0`C6F!;Hh z%y2(|lm!rEjNIX5A2YoBnZ;xdDtJ%3tJS!%L-5U{S8HWZ?HoI8yZfcGxfX#%); zB)b_uZ~+^&Y9Iz8f*(n56>1wys*Rho1zAUH&yL5;ff}Z&lD=s7-aL_}Y%ALyGu%@S zvjVuywBJ`us>{9C7?k$K{1L5!`u$t1`4wD!av^~Ir#0yoF?yua)BNNSKBqhHxb?{d zt#QA@Jt!wYB`K?bbC%K+xVCE1LcG{^bxzhq&!yE_Gj%&H2Gl!+{0yu9? z0-B-1oob?^dOD%zNp9>30M!KdedkZ8(Z~2(t2^cYwq{a*!}SkL7BR=QbSwC0@IwpV z`(I?n_0vtqZpOI8xX=+RTg-oPqu=+}dBaAX<9YqRTV?`XOc_u(76bqTw?D26`w%f(q~}t!Cz$Q zUFY|_r4s)Bg~!+C24mX%!5ZbinmhK}EmVd7shH!Mx*ybO#e-DincQ8Y%;==#-wz;T z_k+l>Kx1RcOb6!P-M^}2Ev$RCGXVNQB;5k&xaHn)tpH`hK%!9Fceh;2J%1^aX0JEO z$*{~$(A|yuVeX^iVelHGYGs1@7`Ok2zC0fL3}h~?{0YFBBTDxraG|5Ca&!dCD-NOK z(i%RX-!Ia8pNPlRKlAdp-#C@@B|7G~w(f-bTxo27?7lkU%VsRlycL1U=sGd)nNcn8Hz&Y%$<9tW7U`X7O1b#Zgpa*-M}6uS-oECQ?mK+}Y^Uv`ccnCSAS8imly z02GxRzTDxHCh4n0ABtECdXK&S21t2bldqi3>s2#8g&|7{2PfIQZkWC z4Yb6{=hMKhUBJ&@#TuC7vh^x8P^yhOwmw(bK*A`ec(9HM=|rqjZj?Ihu<}e&z$3pa z1uZ-aYQkIWoC-agu;m2VV(vc4j7eb)bMLqnhVyAwPWA?j?;!v^7r+mzcv}Iiokk^L z*w>rCCT=Tn4BaWK0WJnIOe+Cv^EZ{%aslalr2AN%79ibko=VEO7t3T%ON<9=18rCD z5}pzH)%F;)&_=hb!>>rewg>B?(6D+S&;#n>^DxBTjXI!yLcL{rwb~F}08y;Tqk0Kn2_)Brd|)^92$XE^1gJ=8HvqrW`ugqM)L57z?fwTR4uSj}nYbAy z?pw&)if0Ki1lH5z=dP~#RK$)W5v1MjV9Q!{C;NViebGKeF28zIhxjO(#qqTF9 zPDu&?sLkIf7mh&EtahSq(g_vL0{(eUJs)&FRj!|#tOG0^V8@vMG7K&b9^>W!{rJV) z7fkEzeyeQ*Rj9e$G~C^@P6X$OO8zQU5$6qH@{C(`Ib4I2s(_k^O?Y@BY&3f?rbIZM zsu!m0$|J0+`_WgnjtQ?b<|k+#ecIGPeT*52*wF}c?^M%(kvy%V9qIn5K9E*`y;mO# z|0kdxQ``UhSk@=GBD_$uzXYof-xoF&~`0Z(pSKY2lv_rjT1L6w+qt{s;nd{tw7I|x*({Yc1l<1sB#`k1HHszSMD4XGw}p)k&g26k3^;f5K@&7n0_sRzB_GY2`fO5U5;#{|cdamVrG0vO56d7Ap=jL<1AEz&|)e`VY^~Heake262tyo0Kz24=N8P7o^D@ESg&KaQJ7)Px8`!>dgOjo#+5jg}DnfjQdf|#QNhZK-m$57I#$>88HGUBE>%Az^D z3(SwU8G7*tbhbZp8d;aHwkc#6dis{#dbeW}RT~K|c+>m?%$@(pera}0GCiHKJymQ1 zoW(^R0cRPAmGZI`mpI6$5$@!ju?uD9sz_KfP6PyK#mp|$2U=Z6d18pp&#&zcmSS>^ zuagvc*W36NoE3nmsLRZbq|cBC-UKlLq|Pp-gqPM15Jcql|I+i{io^G|GdF%LovzFC zw_L~d4X9WOM;pglmewS^a)_yQ;e2RU!pl}#%G>nZP$Mp@B%<36Bg|9UIVBqqG_Pu; zA+Bz$F$yu#D0TD{unSfEFm}m7ckHD~WL3heHx7Kj`nsfBhyf4hqWcxL%x9v zK8cMz;7zMaD7af;*zxNXkBohH-w3_z_>GYMx5jV20VZUs({f((Z$$dPJ*|1o<#|Lytz_iq=PS5Lj%ZSjXS_Mbm+ulZX0@pMlYR%yon{Opf1nhJFFl6B{u zKT7hy=JUJAnTpr>CeKd~p8TJy{I|b$i4SPZS0fkA-ztXx`IQ>F<3jT`EQtYPpZ{+& z^y{kuU(Z&&=KJ@s|8E)n_ptwsF;e^gB<;bG8KG%4v7YK#k4)5`IWx3#igO^IKR^Co zgnE>(9jmY(T7lp_)8JG0s8muVmB4yX=x>X-QS`X0WG_^5eW2!toa8K0nMfnoD-TClYO}AJbafA#SP?UHLu99{1_-b2*S=ZUHXjK9|)f)$dE#w9nEym7-h6mgO(CQ9Q)}FE29XS2*=V zXM&T?`JS8<)c0s{jw$O^SGBijQ0VEx0Ql8y?x8i-Y?knQ((M1G|L)AkNpmAcWfnxC zZqrJG%~&On$TK_GGbJ2h`zQ!IqduzT!7*0LH+0B~)_ZFsk2UVpujRljA#aJ}(ZsC7 z!F&x!!OdhY7&;w_y)GaqJYD5=cW5~lByn^Jls@OS>rK{qh}%w!QpxDON3#9e?b}*U z9nKdm;r^-nqZ4~6YR;w(mYQhbF4c>VDuxIMN4&0<+N!H`xZ`tG<3&*9V@JGb(U( z%gG$y`|7thcsvU=cSOvh8QLltD^4u^ypK@pPrsv=`aD@nrl=7A!noGpc}9xsGZ~S8 z>c$%JfHGnKHzN|{K*BYSr%G^rhIPJ$gv-JOrdJ(at4IuGWpxf&dPSc6R!(Q8@^ z+#2go(I^vBs$RCAWfOf`d9`As|D@*{$J5Yt!&1*=6K7vN(OJ6HD^|gUpE)HbZUZIj z=Lw@H4X?(Zb=N(vin}QLri!(;s|1e@x@x2H?!}t|8hdDiutS4_t<9HInCcDZBK#_6 zt?K48C7KSJhanGKj?3Xx^LpE{vF}1Sn`?Ej+2r7YYr82~Aa5^f|6Eda_0>15KX`LB zjt%9!5A8u$Z*wL~)JS_VNaU>NRXyw+WTcxxm}SUT1iup9P<%MbQI}HSd(sK2bX+tH z-rJ~n66`Ii>Nm<@eLCly+S%MoS|TZicTKa>3o^wg%*sg?3is7w`wPd`Z>ELwWJsRW zu4}bj_axLb-pe<93`5E*zxI;`#xkG&81uIHUTzt1LDCmKLK-Ddoc9m+2-vyeH*1~S8qt?>_P|5yL-lu^)vUl{L6%Anc~x|e zz6SpfmncA6%`8vGK$AsD4D(#Uq>Hw|eCuqgM~$fiZt-H*QlvU(()rJkvH}yKSouNy zZ*QMgU27VenKyB`u)t*Pcy*QO>S*xE8L-^?!*x2T_|vS>2k>CcXCuc&G2nblicXzr zy{4n|k4WuLrPG3CNRHOiE|hNKBI-i49~1EI`qw0)oGN>z9baPIcNGdOKM5;-JSj_S^JQ? zNn{_j9V+ncTkV^Iq6*obvQs07Du^TGutWDSdjWq->-ibD9rA*!tTRdvn-cVX&0)W; z{;#7+=BYBp-FLQewT4ULb{FU`TSE$YM#^PVlB|tEANp~ z$YSsas@H#*tL)+ND*pysoJ7HJx>NWS9u>AMeyb{J#)Yx8PX+e_Sq)b%AA9C&n~j)k zr*}}BDtS3{htbYqVe0#7FYG`Q1ayh6Ztx1*W)v>8?5=?=viiEPIk?EQMQ~1xj(&*v zbVc;i75+yjNEc>O`XdNzZ>4^;e1eGcDn4Z@+NY>6%>1}P)oe)orhyZBD`f#L^4szY z`}(r_T)Nbn7FD641NT@#iO~dWvI+-ZDjgNHJVl~YYBb7vr$1zCGY={`UmT@nzsVcw zS`bFsJ1aZ5Y~g=%CRkHroG;MxMVcxu-7ABcbyTNyaQfOiMS&8{qJ(cwgby?K6^GQ= zFbsk0HH@a8ih^P!B$^8$QE$%Eq^>ekt*~NMn0#OL79q%S*#O)vC3{>GHt zA^TlNm!FM4J&q(7{cj17K9Tzi1!{_%v%=Hr%ogY9K-!Tn@5 z@vWonzZ7n9>V3qp`EvT{&)z7HHzXMa-%{rCZSZw$$wY~t+uecus}=y3btcg^xA4Np z7lM*K!kp>jGBl(2)y0ck~b2c-O>xm@n>jAD3i>1 zAbUb5#A{hL$6C7N3_B>_MqnunmrMG`#GF%BJZShTGbBl z`2?pkih94&Y3U$T+^dl%743v2<&TaKPFarobl5tz(RHf%c?8z*>;Pc;>MK8;kvedb zf-6T9HtcTo86#iSmi0;en@w8m3AR+X^URzNybA8d#S49h6{*j8g|6p0&yu> zYzo;IygNC(UzEFrRQ;M=btMS6g{ZaFx%_q_aKF3Ko41^sJlCw!che6b7aDZ>JG~NQwU7G;J2UMN>oX#0PM-rm$2ollYmnMvAdB zP0_LRXBf}emM717_+N}n?GGz31mb-j))>aTGpKj#@M*uS+3TC;reb9%MGKPIceZM*NYs8#x>{I7cxTf9CC>P%7w z>w*JUxsd8kHEau=9Xg(ZLq40sPNJLd`gHV6fP12TloOqNy%?fvvDb~cjbrPG_gnjG zkzxhTEFHXU&?P2?&-4Dn_j0AuT8xy7-(VRaEi0`7?ovM^YLw9m0;^|i{~FrvU9dg# zMf4d9v3j0iP$ShC^3$x1j?Y>>Wjo*rs6yJWQ?ur z3F8qk-^Rx3ktlVw>G1?Z@xTvbvF{6y#pL$o{gV9W5ChGhYfLeMad+1JvcAY5lJ@d- z-)v)?4>DzWYS?_VlG(`WK&b!#4e-86ww?v1py=SWT$ zF5fDnzsa1XV-$_lbb=sM<42eWMYeW`kC4#<35JEZHm~ng$7EReBVul`)*&2Qq-pl= zyC+;Cf7(XzP}7(YiYTGR;*Imqu{KYq1581=2_hMCsNyW8!M%6s=U7xJkpx9W==0r) zyASHO;@il7Q63(quRZjBI~1)t+I@BgI&Ni}Mk#d9vRnGGcsIuwRrAzeV5lt#%Xm2? zBeLZk@e>SY;`3;x1;eU<>w^C-U1=cmj0kZau~`=PKDJbam<|2}yn zq(5^5tz>^~tx8jroHg1d_vKAzFz*mvgQ|e5ek@&$6sp!vo{n%rQ}0MXi#o z7pSA^s|bNz0YsF0>d*IwtlEz2@D}Q2#NIV$EpSHlod;X>wObeC5BHo&yE&I-ilebznzz__^20*g435%p%`N7q3W`T<%}+jo z*}TBDg?H)7c~Th!fdACm<}~jrh^AB$8R=~b555(iYl2YK<%_lzAJ^Qr=J&d3OR&UW z_Kyi|ONrO>O#J-%f|w!wXej3_&WpYkUvklI;565pw3Z`Qr$oN=twg~sO$7ZBs9Wjl zq`(duyxy4T6{*NtU7L}ZAulIebwXqGpZbeS1;%s)p+BblsJ2AK-*)Zj8N$B|nR%T$ zk$mSU`@4uAikf~D%oQa8K_+68C%~VAE~t%#f8z@FqApNVjy%)6c6byUe*nsKK!7&upRQMG-A`XwEgisJHh@fxF1(&JnL3`WRU$4n385 zrXz29JpalVcz?uWgL22u3746gXFa7b&gMgPw0$2sW|!z_T+buIrR4!(+3TOagrdvL zziWD?8)1D(YgO#>c$`Tjam&^%z7E9_nq0p>U8VW*uO~wt(R>d=IfIVTNF?T&ezc_# zp}!b-atOV^mxWZh{&-4bqD3E%&9*AJ@mf$l82nTtBkkQ#(e+4o*MW%1-b> zx?csa%OTUEOnz-}@7Y~kn*#I6nhc6P(PBbhJ}F<*I792T!aE=er*YI_;BgHLEyIB} zbC1?Oz1b8_&geZ~`|#PLEZ;1=3YW_6+Q;~i?U$0RiyKS)JxVOYr{)?3KJsU&vdM|P zOq=`^x-!B}@jU}EtdS<3a92ac`e%4u*`YpzOOe?pK#$MoeE4J~^<*cUL^BL|{8Vtl zg`?Zx|Iqf8VR3C+wh6%#fS{uGhCQx<}|J&Z#Ui$PYfDvDB7j!7Ed#RWSD;H3HkHc@+E~odnW^q%neO) zj9vZ$YXm__PYvnDdGsoyzZb^DkaUH`7!reGB(uWDo_^WH@`|LBKE*<><`zAgNA$0I z<+OLrzz&d>sg?RfGtp~se85in?bamKjYdu)KV>%eijvp9(|YyRR_JR{kNVpEP?80x z=Ic*v;C(hCfaRw^!%y$cJAdxI#$_DE(WllaUYBD0q$PWyvX?ViF+aMVPE9XI`^Dcw z$v(N_Sn$Bfd1OJqp^KqOMdW>-r=qdGr~Ck`Bpy?Gd;mfD`Fr9*l&*GZhn{(TVT5PB zXS!|!B4aHh>?(W5N1Dx4>bA6a4+1klR!4*oCJE=%^5ua4x(Fw6_(T+^cETv(Za}*ocKJb$6sEO^BtU#hTQ4^u=D3k5=Qrq!J}I$1Pdc5s~G>VA@;ki6X55a1+kOG8b!Vh z#hd*cF}&KKtdjJ^bB1-XY-y;k_P5W4LK-1epv*<9Ll2X@lu2}IU~Mt2kaLWOKQHDb zUja2;D@bn(;SK2`)v)F=2$ybOY8AMs>tx+sN}W%&&I#4{gGi?f7R%M5CV1H=Sgi?K zuh3lIGNR|WGTf~?{up>pX>6M3&Hhtml+2lOo>QJneg=8&5tNaA`b34$q3k0~rPdB^ zYjPIL#?;#@(fR1E$w<}vyB5J_vg0z5WnEVGtF!PYKB!~KYM9?@Vl>p0a{{v!l=>Wp z!yhM`eUdW;u>LaxHXIplX}zf?pFs2|WN zs9}hG`5gGLYRlDXfHjt0#Um5PW%I-w09Y#lp!{5hT*>E|q^ug`7dO4F@+ z=tYlp;lr5&`;d9e=jHpy^`zk`(?=U|?D7LVSJfJ?&SenrV}AU_V<7(CEoBt&CjgwY z8|^)GiC#_o!p9%`6@FG3Q#$Ni0YJUP;h7)s3^klBy2N=G%!CIUuQl$$YU%!x~ zOVhJ@U;XBugv;@9*`CoPCba(I{MXa10mQiW^3f;t7W|OcJ1i!|iupPZ6s6NT=U-zl ze?GW2`ukCXQ_$xF!9>}Go?BL4eqm;(>f4tUBE;?=Ny>~kRwSy#55jBwDLw~fWiyFt z0O7~Wy*%op%O-orqovsWWDHK-FPS)=Qm^hbMQ-;V0pV_dSetZ25TAdv1pkooj@?@L zGTX4NWIr<|e7o4t|I&@qg?8=DJ8)oP+gi_t0%jRP!XPUlv6iV

    L`2W@ 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

    ;Kw1m=MMf+zTZ*?6 z!0%M^(*Gb7kQ;`5yRO?4^2?M%zpZ{Db$`P5y%}ts@1>s*x!d~iPeeHG@2N+Ai5PY? zw?uEi!c*&mwlkdV2d|Q>TMbG<(N*dBpPT`mez?|<2>RJoSyO+YX3bvx+ZfJ>Yp>cH z7%`O2?S9iI2hg4}_B7eYe%#D<4dWeX7ySqur`#|Ggj3(-o zZ&Gv&R?lluCfrDt1_iszCU=#upGX3b&=oY~=l2-}|w$h12X4xAorD z1v&oV;ylC?2+8*GSV4l>e}i680% z9>w0fYhp!(?M(4sae(XFV+=jIAP^mr(^+sLaMyUc(m#Wj-hFm* zX+JRog=p-~qRHJof?BVxf9?xH9@!HPt8#eT_1_k`s2mXW+H^;f*GAiNh} zB%B`>n=Kt>UlYeIoS&|p4uTJ0`hcT$-n;gWgY#_cOat&}B%0A+GFKCG{w4XsmxZ*C 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 diff --git a/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md b/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md index f652543a23..e2d5b0a90b 100644 --- a/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md +++ b/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md @@ -27,7 +27,7 @@ You can manage a subset of security and analysis features for public repositorie ### Enabling or disabling security and analysis features{% if currentVersion == "free-pro-team@latest" %} for private repositories{% endif %} -You can manage the security and analysis features for your {% if currentVersion == "free-pro-team@latest" %}private or internal {% endif %}repository.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} If your organization or enterprise has a license for {% data variables.product.prodname_GH_advanced_security %} then extra options are available. {% data reusables.advanced-security.more-info-ghas %}{% endif %} +You can manage the security and analysis features for your {% if currentVersion == "free-pro-team@latest" %}private or internal {% endif %}repository.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} If your organization belongs to an enterprise with a license for {% data variables.product.prodname_GH_advanced_security %} then extra options are available. {% data reusables.advanced-security.more-info-ghas %}{% endif %} {% data reusables.security.security-and-analysis-features-enable-read-only %} diff --git a/content/github/administering-a-repository/setting-repository-visibility.md b/content/github/administering-a-repository/setting-repository-visibility.md index aacaffa8b6..8663c2e5cb 100644 --- a/content/github/administering-a-repository/setting-repository-visibility.md +++ b/content/github/administering-a-repository/setting-repository-visibility.md @@ -25,7 +25,7 @@ We recommend reviewing the following caveats before you change the visibility of * If you're using {% data variables.product.prodname_free_user %} for user accounts or organizations, some features won't be available in the repository after you change the visibility to private. {% data reusables.gated-features.more-info %}{% endif %} * Any published {% data variables.product.prodname_pages %} site will be automatically unpublished.{% if currentVersion == "free-pro-team@latest" %} If you added a custom domain to the {% data variables.product.prodname_pages %} site, you should remove or update your DNS records before making the repository private, to avoid the risk of a domain takeover. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)."{% endif %}{% if currentVersion == "free-pro-team@latest" %} * {% data variables.product.prodname_dotcom %} will no longer include the repository in the {% data variables.product.prodname_archive %}. For more information, see "[About archiving content and data on {% data variables.product.prodname_dotcom %}](/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github#about-the-github-archive-program)."{% endif %}{% if currentVersion == "free-pro-team@latest" %} -* {% data variables.product.prodname_GH_advanced_security %} features, such as {% data variables.product.prodname_code_scanning %}, will stop working unless the repository is owned by an organization that has a license for {% data variables.product.prodname_advanced_security %} with sufficient spare seats. {% data reusables.advanced-security.more-info-ghas %}{% endif %}{% if enterpriseServerVersions contains currentVersion %} +* {% data variables.product.prodname_GH_advanced_security %} features, such as {% data variables.product.prodname_code_scanning %}, will stop working unless the repository is owned by an organization that is part of an enterprise with a license for {% data variables.product.prodname_advanced_security %} and sufficient spare seats. {% data reusables.advanced-security.more-info-ghas %}{% endif %}{% if enterpriseServerVersions contains currentVersion %} * Anonymous Git read access is no longer available. For more information, see "[Enabling anonymous Git read access for a repository](/enterprise/{{ currentVersion }}/user/articles/enabling-anonymous-git-read-access-for-a-repository)."{% endif %} {% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %} diff --git a/content/github/getting-started-with-github/about-github-advanced-security.md b/content/github/getting-started-with-github/about-github-advanced-security.md index f4e1f7ed53..150880858d 100644 --- a/content/github/getting-started-with-github/about-github-advanced-security.md +++ b/content/github/getting-started-with-github/about-github-advanced-security.md @@ -1,6 +1,7 @@ --- title: About GitHub Advanced Security -intro: '{% data variables.product.prodname_dotcom %} makes extra security features available to customers under an {% data variables.product.prodname_advanced_security %} license. These features are also enabled for public repositories on {% data variables.product.prodname_dotcom_the_website %}.' +intro: '{% data variables.product.prodname_dotcom %} makes extra security features available to customers under an {% data variables.product.prodname_advanced_security %} license.{% if currentVersion == "free-pro-team@latest" %} These features are also enabled for public repositories on {% data variables.product.prodname_dotcom_the_website %}.{% endif %}' +product: '{% data reusables.gated-features.ghas %}' versions: free-pro-team: '*' enterprise-server: '>=3.0' @@ -9,7 +10,7 @@ versions: ### About {% data variables.product.prodname_GH_advanced_security %} -{% data variables.product.prodname_dotcom %} has many features that help you improve and maintain the quality of your code. Some of these are included in all plans{% if currentVersion != "github-ae@latest" %}, such as dependency graph and {% data variables.product.prodname_dependabot_alerts %}{% endif %}. Other security features require a license for {% data variables.product.prodname_GH_advanced_security %} to run on repositories apart from public repositories on {% data variables.product.prodname_dotcom_the_website %}. +{% data variables.product.prodname_dotcom %} has many features that help you improve and maintain the quality of your code. Some of these are included in all plans{% if currentVersion != "github-ae@latest" %}, such as dependency graph and {% data variables.product.prodname_dependabot_alerts %}{% endif %}. Other security features require a license for {% data variables.product.prodname_GH_advanced_security %} to run on repositories apart from public repositories on {% data variables.product.prodname_dotcom_the_website %}. {% if currentVersion == "free-pro-team@latest" %}For more information, see "[About licensing for {% data variables.product.prodname_GH_advanced_security %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-licensing-for-github-advanced-security)."{% elsif currentVersion ver_gt "enterprise-server@2.22" %}For information about purchasing a license for {% data variables.product.prodname_GH_advanced_security %}, contact {% data variables.contact.contact_enterprise_sales %}.{% elsif currentVersion == "github-ae@latest" %}There is no charge for {% data variables.product.prodname_GH_advanced_security %} on {% data variables.product.prodname_ghe_managed %} during the beta release.{% endif %} @@ -43,7 +44,7 @@ Once your system is set up, you can enable and disable these features at the org For public repositories on {% data variables.product.prodname_dotcom_the_website %}, these features are permanently on and can only be disabled if you change the visibility of the project so that the code is no longer public. -For other repositories, once you have a license for your organization or enterprise, you can enable and disable these features at the organization or repository level. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.0" %}For more information, see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)" and "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)."{% endif %} +For other repositories, once you have a license for your enterprise account, you can enable and disable these features at the organization or repository level. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.0" %}For more information, see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)" and "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)."{% endif %} {% endif %} diff --git a/content/github/getting-started-with-github/githubs-products.md b/content/github/getting-started-with-github/githubs-products.md index 4f14fddd35..0105730316 100644 --- a/content/github/getting-started-with-github/githubs-products.md +++ b/content/github/getting-started-with-github/githubs-products.md @@ -79,7 +79,8 @@ In addition to the features available with {% data variables.product.prodname_te - Additional security, compliance, and deployment controls - Authentication with SAML single sign-on - Access provisioning with SAML or SCIM -- {% data variables.product.prodname_github_connect %} +- {% data variables.product.prodname_github_connect %}{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.22" %} +- The option to purchase {% data variables.product.prodname_GH_advanced_security %}. For more information, see "[About {% data variables.product.prodname_GH_advanced_security %}](/github/getting-started-with-github/about-github-advanced-security)."{% endif %} {% data variables.product.prodname_ghe_cloud %} also includes: - {% data variables.contact.enterprise_support %}. For more information, see "{% data variables.product.prodname_ghe_cloud %} support" and "{% data variables.product.prodname_ghe_cloud %} Addendum." diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-licensing-for-github-advanced-security.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-licensing-for-github-advanced-security.md index e60a2c91ff..732af53a92 100644 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-licensing-for-github-advanced-security.md +++ b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-licensing-for-github-advanced-security.md @@ -1,6 +1,7 @@ --- title: About licensing for GitHub Advanced Security intro: 'If you want to use {% data variables.product.prodname_GH_advanced_security %} features in a private or internal repository, you need a license. These features are available free of charge for public repositories.' +product: '{% data reusables.gated-features.ghas %}' versions: free-pro-team: '*' --- @@ -11,22 +12,20 @@ If you want to use {% data variables.product.prodname_GH_advanced_security %} fe {% data reusables.advanced-security.license-overview %} -You can buy a license for an organization that is owned by a user account or for your enterprise account. If you want to use {% data variables.product.prodname_GH_advanced_security %} features for a private, user-owned repository, you must transfer the repository to an organization with a license. - -To discuss licensing for {% data variables.product.prodname_GH_advanced_security %}, contact {% data variables.contact.contact_enterprise_sales %}. +To discuss licensing {% data variables.product.prodname_GH_advanced_security %} for your enterprise account, contact {% data variables.contact.contact_enterprise_sales %}. ### About committer numbers for {% data variables.product.prodname_GH_advanced_security %} We record and display two numbers of committers for {% data variables.product.prodname_GH_advanced_security %} on {% data variables.product.prodname_dotcom_the_website %}: -- **Committers** is the number of committers who contributed to at least one private repository in an organization and who use a seat in your license. That is, they are also an organization member, an external collaborator, or have a pending invitation to join your organization or enterprise account. +- **Committers** is the number of committers who contributed to at least one private repository in an organization and who use a seat in your license. That is, they are also an organization member, an external collaborator, or have a pending invitation to join an organization in your enterprise. - **Unique to this repository/organization** is the number of committers who contributed only to this repository, or to repositories in this organization. This number shows how many license seats you can free up by disabling {% data variables.product.prodname_GH_advanced_security %} for that repository or organization. If there are no unique committers, this means that all active committers also contribute to other repositories or organizations that use {% data variables.product.prodname_GH_advanced_security %}. Disabling the feature for that repository or organization would not free any seats on your license. {% note %} -**Note:** The total number of seats used in your license is not the sum of either the committers or the unique committers to each repository or organization. This is because there are people who contribute to multiple repositories or organizations. The number of seats used is measured across the whole enterprise or organization account to ensure that each person is counted only once regardless of how many repositories or organizations they contribute to. +**Note:** The total number of seats used in your license is not the sum of either the committers or the unique committers to each repository or organization. This is because there are people who contribute to multiple repositories or organizations. The number of seats used is measured across the whole enterprise account to ensure that each person is counted only once regardless of how many repositories or organizations they contribute to. {% endnote %} @@ -47,4 +46,4 @@ When you decide which repositories and organizations to prioritize for {% data v - Codebases that are the most critical to your company's success. These are the projects for which the introduction of vulnerable code, hard-coded secrets, or vulnerable dependencies would have the greatest impact on your company. - Codebases with the highest commit frequency. These are the most actively developed projects, consequently there is a higher risk that security problems could be introduced. -When you have enabled {% data variables.product.prodname_GH_advanced_security %} for these organizations or repositories, you should assess which other codebases you could add without adding any extra unique committers and using up more seats on your license. After this, review the next most important and busy code bases. If you want to increase the number of seats in your license, contact {% data variables.contact.contact_enterprise_sales %}. +When you have enabled {% data variables.product.prodname_GH_advanced_security %} for these organizations or repositories, you should assess which other codebases you could add without adding any extra unique committers and using up more seats on your license. After this, review the next most important and busy codebases. If you want to increase the number of seats in your license, contact {% data variables.contact.contact_enterprise_sales %}. diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-licensing-for-github-advanced-security.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-licensing-for-github-advanced-security.md index 6af70a3655..c10dea733a 100644 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-licensing-for-github-advanced-security.md +++ b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-licensing-for-github-advanced-security.md @@ -2,6 +2,7 @@ title: Managing licensing for GitHub Advanced Security intro: 'You can view and manage your use of seats on a license for {% data variables.product.prodname_advanced_security %}.' mapTopic: true +product: '{% data reusables.gated-features.ghas %}' versions: free-pro-team: '*' --- diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-advanced-security-usage.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-advanced-security-usage.md index 6b3107ffe5..3e9d1d052a 100644 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-advanced-security-usage.md +++ b/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-advanced-security-usage.md @@ -2,6 +2,7 @@ title: Viewing your GitHub Advanced Security usage intro: 'You can view and manage usage of your {% data variables.product.prodname_GH_advanced_security %} license.' permissions: Organization and enterprise owners can manage access to {% data variables.product.prodname_GH_advanced_security %} for their organization or enterprise organizations. +product: '{% data reusables.gated-features.ghas %}' redirect_from: /github/setting-up-and-managing-your-enterprise/managing-use-of-advanced-security-for-organizations-in-your-enterprise-account versions: free-pro-team: '*' @@ -9,20 +10,6 @@ versions: Each license for {% data variables.product.prodname_GH_advanced_security %} specifies a maximum number of accounts, or seats, that can use these features. Periodically you should check that your use is within your license capacity. For more information, see "[About licensing for {% data variables.product.prodname_GH_advanced_security %} enterprise license](/github/setting-up-and-managing-billing-and-payments-on-github/about-licensing-for-github-advanced-security)." -### Viewing and managing {% data variables.product.prodname_GH_advanced_security %} license usage for your organization - -You can check how many seats your license includes and how many of them are currently used on the "Billing & plans" page for your organization. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing_planning %} -5. Optionally, in the "{% data variables.product.prodname_GH_advanced_security %}" section, click **Manage repositories** to see the usage for each repository that has the feature enabled. - ![Details of usage of seats](/assets/images/help/billing/ghas-seats-org.png) -6. Scroll to the "{% data variables.product.prodname_GH_advanced_security %} repositories" section to see a detailed breakdown of usage by repository for your organization. - ![{% data variables.product.prodname_GH_advanced_security %} repositories section](/assets/images/help/organizations/settings-security-analysis-ghas-repos-list.png) - For more information, see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)." - ### Viewing and managing {% data variables.product.prodname_GH_advanced_security %} license usage for your enterprise account You can check how many seats your license includes and how many of them are currently used on the "Enterprise licensing" page. @@ -43,3 +30,4 @@ You can check how many seats your license includes and how many of them are curr 6. On the "Security & analysis" settings page, scroll to the "{% data variables.product.prodname_GH_advanced_security %} repositories" section to see a detailed breakdown of usage by repository for this organization. ![{% data variables.product.prodname_GH_advanced_security %} repositories section](/assets/images/help/enterprises/settings-security-analysis-ghas-repos-list.png) For more information, see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)." + diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md index e0fc03e983..6437e2b873 100644 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md @@ -26,7 +26,7 @@ versions: The page that's displayed allows you to enable or disable all security and analysis features for the repositories in your organization. -{% if currentVersion == "free-pro-team@latest" %}If your organization, or the enterprise that owns it, has a license for {% data variables.product.prodname_GH_advanced_security %}, the page will also contain options to enable and disable {% data variables.product.prodname_advanced_security %} features. Any repositories that use {% data variables.product.prodname_GH_advanced_security %} are listed at the bottom of the page.{% endif %} +{% if currentVersion == "free-pro-team@latest" %}If your organization belongs to an enterprise with a license for {% data variables.product.prodname_GH_advanced_security %}, the page will also contain options to enable and disable {% data variables.product.prodname_advanced_security %} features. Any repositories that use {% data variables.product.prodname_GH_advanced_security %} are listed at the bottom of the page.{% endif %} {% if currentVersion ver_gt "enterprise-server@3.0" %}If you have a license for {% data variables.product.prodname_GH_advanced_security %}, the page will also contain options to enable and disable {% data variables.product.prodname_advanced_security %} features. Any repositories that use {% data variables.product.prodname_GH_advanced_security %} are listed at the bottom of the page.{% endif %} diff --git a/data/reusables/advanced-security/note-org-enable-uses-seats.md b/data/reusables/advanced-security/note-org-enable-uses-seats.md index f93772d5b7..ff72be9b61 100644 --- a/data/reusables/advanced-security/note-org-enable-uses-seats.md +++ b/data/reusables/advanced-security/note-org-enable-uses-seats.md @@ -1,6 +1,6 @@ {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.0" %} {% note %} -**Note:** If you enable {% data variables.product.prodname_GH_advanced_security %}, committers to these repositories will use seats on your {% data variables.product.prodname_GH_advanced_security %} license. This option is disabled if you have exceeded your license capacity. For more information, see "[About licensing for {% data variables.product.prodname_GH_advanced_security %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-licensing-for-github-advanced-security)." +**Note:** If you enable {% data variables.product.prodname_GH_advanced_security %}, committers to these repositories will use seats on your {% data variables.product.prodname_GH_advanced_security %} license. This option is disabled if you have exceeded your license capacity. {% if currentVersion == "free-pro-team@latest" %}For more information, see "[About licensing for {% data variables.product.prodname_GH_advanced_security %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-licensing-for-github-advanced-security)."{% endif %} {% endnote %} {% endif %} \ No newline at end of file diff --git a/data/reusables/gated-features/ghas.md b/data/reusables/gated-features/ghas.md new file mode 100644 index 0000000000..fcf1b455c7 --- /dev/null +++ b/data/reusables/gated-features/ghas.md @@ -0,0 +1 @@ +{% data variables.product.prodname_GH_advanced_security %} licenses are available for enterprise accounts on {% data variables.product.prodname_ghe_cloud %}{% if currentVersion == "github-ae@latest" %}, {% data variables.product.prodname_ghe_managed %},{% endif %} and {% data variables.product.prodname_ghe_server %}. {% data variables.product.prodname_GH_advanced_security %} is also included in {% data variables.product.prodname_ghe_one %}{% if currentVersion == "free-pro-team@latest" %} and in all public repositories on {% data variables.product.prodname_dotcom_the_website %}{% endif %}. For more information, see "[About GitHub's products](/github/getting-started-with-github/githubs-products)." \ No newline at end of file From cd2a217a77a77c658a55bfbcc35553cd11026df6 Mon Sep 17 00:00:00 2001 From: Sarah Schneider Date: Wed, 17 Mar 2021 10:29:16 -0400 Subject: [PATCH 27/37] do not error if frontmatter includes next GHES release or hardcoded next --- lib/enterprise-server-releases.js | 4 ++++ lib/get-applicable-versions.js | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/enterprise-server-releases.js b/lib/enterprise-server-releases.js index 3e6f83c31a..0e620ec0c5 100644 --- a/lib/enterprise-server-releases.js +++ b/lib/enterprise-server-releases.js @@ -4,6 +4,9 @@ const versionSatisfiesRange = require('./version-satisfies-range') // enterprise-releases/docs/supported-versions.md#release-lifecycle-dates const dates = require('../lib/enterprise-dates.json') +// Some frontmatter may contain the upcoming GHES release number +const next = '3.1' + const supported = [ '3.0', '2.22', @@ -57,6 +60,7 @@ const deprecatedReleasesWithNewFormat = deprecated.filter(version => versionSati const deprecatedReleasesOnDeveloperSite = deprecated.filter(version => versionSatisfiesRange(version, '<=2.16')) module.exports = { + next, supported, deprecated, legacyAssetVersions, diff --git a/lib/get-applicable-versions.js b/lib/get-applicable-versions.js index a05880799e..ec64f109ff 100644 --- a/lib/get-applicable-versions.js +++ b/lib/get-applicable-versions.js @@ -1,4 +1,5 @@ const allVersions = require('./all-versions') +const { next } = require('./enterprise-server-releases') const versionSatisfiesRange = require('./version-satisfies-range') // return an array of versions that an article's product versions encompasses @@ -15,6 +16,8 @@ function getApplicableVersions (frontmatterVersions, filepath) { // get an array like: [ 'free-pro-team@latest', 'enterprise-server@2.21', 'enterprise-cloud@latest' ] const applicableVersions = [] + let nextVersion = false + // where frontmatter is something like: // free-pro-team: '*' // enterprise-server: '>=2.19' @@ -23,6 +26,15 @@ function getApplicableVersions (frontmatterVersions, filepath) { // ^ where each key corresponds to a plan Object.entries(frontmatterVersions) .forEach(([plan, planValue]) => { + // Special handling for frontmatter that evalues to the next GHES release number or a hardcoded `next`: + // we don't want to return it in the applicable versions array or it will become a permalink, + // but we also don't want to throw an error if no other versions are found. + if (planValue !== '*') { + if (versionSatisfiesRange(next, planValue) || planValue === 'next') { + nextVersion = true + } + } + // for each plan (e.g., enterprise-server), get matching versions from allVersions object const relevantVersions = Object.values(allVersions).filter(v => v.plan === plan) @@ -42,7 +54,7 @@ function getApplicableVersions (frontmatterVersions, filepath) { }) }) - if (!applicableVersions.length) { + if (!applicableVersions.length && !nextVersion) { throw new Error(`No applicable versions found for ${filepath}. Please double-check the page's \`versions\` frontmatter.`) } From 5006cdaff269cf93d381a7f2f8cf19930cb143bf Mon Sep 17 00:00:00 2001 From: Sarah Schneider Date: Wed, 17 Mar 2021 10:30:16 -0400 Subject: [PATCH 28/37] add tests --- .../fixtures/page-versioned-for-ghae-next.md | 5 ++++ ...e-versioned-for-next-enterprise-release.md | 5 ++++ tests/unit/page.js | 30 +++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 tests/fixtures/page-versioned-for-ghae-next.md create mode 100644 tests/fixtures/page-versioned-for-next-enterprise-release.md diff --git a/tests/fixtures/page-versioned-for-ghae-next.md b/tests/fixtures/page-versioned-for-ghae-next.md new file mode 100644 index 0000000000..7829f629ad --- /dev/null +++ b/tests/fixtures/page-versioned-for-ghae-next.md @@ -0,0 +1,5 @@ +--- +title: Page versioned for next GitHub AE release +versions: + github-ae: 'next' +--- diff --git a/tests/fixtures/page-versioned-for-next-enterprise-release.md b/tests/fixtures/page-versioned-for-next-enterprise-release.md new file mode 100644 index 0000000000..46a30ad849 --- /dev/null +++ b/tests/fixtures/page-versioned-for-next-enterprise-release.md @@ -0,0 +1,5 @@ +--- +title: Page versioned for next Enterprise release +versions: + enterprise-server: '>=3.1' +--- diff --git a/tests/unit/page.js b/tests/unit/page.js index 3843e0abd7..988b278426 100644 --- a/tests/unit/page.js +++ b/tests/unit/page.js @@ -190,6 +190,36 @@ describe('Page class', () => { expect($.text()).not.toBe('This text should render on any actively supported version of Enterprise Server') expect($.text()).toBe('This text should only render on non-Enterprise') }) + + test('support next to-be-released Enterprise Server version in frontmatter', async () => { + // This fixture has `enterprise-server: '>=3.1'` hardcoded in the frontmatter + const page = await Page.init({ + relativePath: 'page-versioned-for-next-enterprise-release.md', + basePath: path.join(__dirname, '../fixtures'), + languageCode: 'en' + }) + // set version to 3.0 + const context = { + currentVersion: 'enterprise-server@3.0', + currentLanguage: 'en' + } + await expect(() => { return page.render(context) }).not.toThrow() + }) + + test('support next GitHub AE version in frontmatter', async () => { + // This fixture has `github-ae: 'next'` hardcoded in the frontmatter + const page = await Page.init({ + relativePath: 'page-versioned-for-ghae-next.md', + basePath: path.join(__dirname, '../fixtures'), + languageCode: 'en' + }) + // set version to @latest + const context = { + currentVersion: 'github-ae@latest', + currentLanguage: 'en' + } + await expect(() => { return page.render(context) }).not.toThrow() + }) }) test('preserves `languageCode`', async () => { From 4aa879e80d994dfaaa2229e4ba146c5eb4ed1ab6 Mon Sep 17 00:00:00 2001 From: jmarlena <6732600+jmarlena@users.noreply.github.com> Date: Wed, 17 Mar 2021 08:58:21 -0700 Subject: [PATCH 29/37] Update Packages support overview diagram (#18231) * Update diagram * fix image url * Remove obsolete GHES-specific image * Enlarge image and remove background --- .../ghes-packages-diagram.png | Bin 245924 -> 0 bytes .../packages-overview-diagram.png | Bin 505214 -> 433859 bytes .../about-github-packages.md | 9 +-------- 3 files changed, 1 insertion(+), 8 deletions(-) delete mode 100644 assets/images/help/package-registry/ghes-packages-diagram.png diff --git a/assets/images/help/package-registry/ghes-packages-diagram.png b/assets/images/help/package-registry/ghes-packages-diagram.png deleted file mode 100644 index 7006ce5c96d71453fac32585b1a6951eb1a8d9dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245924 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%0D<4|0Sg-ujgO=DE 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�)M;f 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±r4xiMVSuno@`)tGm(zl)`v1J>p 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�mOY{ufk&%5qhwK72&-o11vpE_w6CCWqX2VHr$R4-eC(DdJe2G9E5=kB4&pK z=ga`P3XQbiM;S+K4?NLaX+|rYqtCpberY`V!67-`h}KJqq%XVc^nKp;#5N5!>-8Vt z$d2{69oRV;R~vwsg2@N7#1=lC-l{Fkb-{CIQ#>-y>lKE-rT5LA^(}&mhy{`>CRb4@ zanA|)gR-ugl>>!}kx@B6+D3&_i47vy>gtQs2{rxe&!U%>mXi*-O9(u0pqNX=+P}+S z;*!dCt$R6f@H%bPggprjSullS{P-V58KN+qo=e|ciYB%nE!qo!8wU474lZMArc-Tq zu=xhv^QRCND^4qpd2vHK4#B)!sbLPNc-`x$lQ-(?z#6oLw*5!ekB0Jxjg^q+K)17H z?oFaW5sW%w?_O=iMYEQX#5!!Amcy2mL#pBJ0aJfp%krKF5xxi#R32&OoC{d!V~;D} z!9F|E`<$~hYON(r^x1SYHIW=)!aK6~(Vb_vUsJn~qdYhsUpZKM6)Qw-}zJQV!D1pM~I# zUsq5sMBMXXUj=6pQ)N;!IEj&h6cJD**$_c71N7;mw4@+Eo3C9T6+VC8ESg+&wT&ti zJO^Vd7VG|Ca%;;Iu>D+;Ql0ic%&djc|Ky_^kpS=ygrIpRx^!C=B__0C4a`7Am+h5v z&0}lED1!`&_GZKMzkk$7*h15apwa!q`b1ozgFBx{$P`uuZ02q__jNpb+k+VMy3*V1<(@?u9os%y6(@* zT_1;sDu~HJHO*iVNsZE;{<5)NOpEP7!<5@GGDnO6Q8_B@?W|5tPpft`F0S~A5y8`R z(4Uv?wnI~^CDiuAQIl(_Way}!RuNUK1f}G7MqAPk5|pIu$Aj9GuUu}=uXURPwBItP ziXNo!=B2#4wvqe(1u+4EAvB0!)d2w?=MTnrlohkZWBopIGNPnc9hmL6LpT&Cg6|Sp zBnLa#bfmiOJ9q)LPJ!^u3; zylqFA-Eymz+O0WJ?@9FV&!>-xP&M~N#T(Bz#o-R_4)&?zyR6IA`pm!$4PguW!f~D# zE-qlTUDrCw^k5gD7^ZoD>=%w?yv}=f+d2kOtp0p?m6tCz@>;9$&)U3A$tf|H9 zb_vIgcoR!dq*+ZPv!tEwj&4{5BZHkEh#Lm&utluSM*N)_>w;UDAPpMs{a%!Rj)mvPu*lt% zJDr#!ez+H>gh~IQohfnYX#$n*$Nq8EUF_kf$0swT8|Zk31<>`U(PY{ZQ4GeZ%`a4Y zu#*YA!xYl!@yp-$wEKRPZ-aqlFNM!+<3D*c83cZiBSXK1U_8TkZ{~c5m*_pHBWEcz z1A4xX@9LkK_rS>l%f;<4@3@Xv7{1N`QMt|oJ}CUnik8xTj%~vj#V@HYChHzQYUYlq zD1~NVS>-_yOEg+VE>`qMK%dRBF}J%kJWJmR{yPLY>IpoY{P~yIdFWdj?Jvu^;JaVP zSenn*rSf!W#d^`cPWQ#zQZ6ugcwdp-HjE9TdoDF5n7?v0MR?uC&@xrCmiwom7KO$Z zLhoa176r?ZZKH2KxFr8zLU6vXYOTR=<7|%jk8`K~k5iy#o5v{oOfUkF6kO5Aa0=4L zZtg-x7d<+;pd^B`v88b;ug*-IQh?J2zF9H{7)sNk&DKH6`wGH_xB3#lX#ePtMF&f% zz%!+@23Vc*Jl@7M&5#{166(9W?7$?Kk=IE&X(D`m^_{!|Lc;v@?1oMEz07beR%T;$ zbihYlT8jq~Or-(2$JNdAcM zw|c8vQ|VZwCG=`7_3{{z+@$h_ho|uqVZ8a&^VA4Vev2Ec2w+q>tL5%mYjN&Zw)gr| zkL@|lruJ}2YsPi@MD4!Z&9G+USL%t`do>~}_jPGUX|&ZXd|aibk{0+AT7t4}a1%xjJ}nj4#f0hSwTA}`_-)ly- zltuxzCOhVBIzq!)!2_wVrY4a}gbvq;f1cMU7$82e;lV;Ae%4#0^fPs6(D0z3)GW5# zHubL>gVSenZdp65(hc7F4|R51GBq~CrCYgQ#8+KrpzwDF-FIx;G7O7B|KH7kCfKBU zH#K5?9wH*I167_CFY&{yx$V<_NypgI)#IxIDBb)9SaIF!=;)!h5DckKY7>_>qV3g| z9N~-MX6Ah%&VhPWfp%S&9WGl#h7UY3MGAU4#yu(N&{oZ%B@I<~1NOBYyNf4t+|@X*+}BmXs3QwgSh@c>`Nv8_YU688rAI z1#3~gk31Jd%l$C9OO(mKsE}>U|F+MyeN`)y!C(595?mLk+J8MsL7LKe`ierr75WJj zXBCg8{=r0fkVU2kvk92|6*kyMPE0=1EwrGtMS;g3OZ$^XNZant955TjS*+Tnn6%W~ ztnA=9ij1Om&9{DD_;iKe^282X7Ax+VPo)_-Jp!k(Z+Ghgpb!BaJK>7h4=-}t{F`B= zsGHdrD=_;(b&8$yYvd~9pDaK~k%Id_GV-5hLU$>@_Y=H2@9P6j-i%9M(l=}mLxtT{ zW8BYoVlVQwi=J(O{QO0lJ+myoOT^;gqbAEjPo@q6CXg=6nrAP(vc#e$7OQ|#0t3BH zJ4B&^^Hx4r9yF2n)~wAVivB>Gm=>qKFD)i3PDv#t&VTZQkcPoiE3$cH!JkBVDh7>N zpv|8Twl{o`k_h_k!GBTTHs~lhoTh&keDn%rdp}q?P(@)}3))A<1y)7Z`>)9gVwax2 zw%!~6{TQTu_|&lW|D7WZEYUvEo9y|-L4sYKyWz4VoL2_}Vj-V4l$+0|pCiyt5fxj; zzvx&=Ep~6#RuOJY4&U_Z6)FwVCPq(%)%{v)P`O4KSOaAf$=m%jL&26~PSPdM<1bWd_+23hZ?9PA;w?8-kMT)`-}m?i zjI?s=R6gcCIHkg`0si6TVsDKe$M<|>U!2A?q|zv^s`Q}iJc&=_{C2CGO`$(A>x3*H zO~-p~tnScs84 z$M+f?EgTQoMsq`H^@%a*{?(MS>PnWsMpx^*_bh76S%2diaWgAic%w9TkP+B8)Q1nqL)zXMpfe?m`JWOVmf~&EqAjFHs>k0Dw(ZA z@Pl7`Xabk!XT+;46gb>LwZv)QK2AauOzI=st}qe3j^S>eI3k7pJIB5WLM3)`i^|c< zCoC3>UZS!aeQE~OA0C`j0_Q4AK?I)68iZBx^rYcVms zt!Ve{OpXZQ2oj%;P-{=e<)v_Z_q{~)SN_kgBwQ`^3b|Ivgx=O1M$brvZ*-VvDk*;& zx!Ag%#~D230r9H$KyfMe^rgW~!kL=QIKT5@G^rAd>EUVFTfIUb)+ntua5Egt@z}M! z6Pf=#ni%H2fgjCYmX%~0L9`9Grwk7h=c}3S*%~yG!qvW5B;#y0MIVQRgyRW1!K&aN zyN-6KV#a8E`m5LqkTAm$EgOHeb|fddr{y&xfrx~U0*@0usrDt)WY)%3c}R-P2m;dPeW0->s)PH zD1-oZT*!&8>49T!2g}R$CIH>5=ID=A(Z?R`X>}g&HwQ_W^)InYJBt^nyL-yy6B5#W z4$Z#puDf*&is*T@DhGX13d|=f3?Atqjm%Hbhc*eLXKNq z7FrHP|3%o4jK>mvGx>nzqorzsn0?!4@&MN>Va}fi&WX7ZBR5?PCcmGWaxV7&cxLUb zYZ0=oGf2<$YfqkVFT0gzlrGFf4QmodK!;TRwi&zg(n6=H`>2)-5mRZ3?$yOpTaWT^ z3x&p;EV*|dK?!w?dveJv9dHp#(*By9uKzZc*msjXk_2X0O`Jo`IZ_>~*kq}`OuX*a z!E?Kqn06ZKv3#n-+@50FAehB6uVcDavS|I6qT}#c{CBySv^{rf8Weq9UIFaqz{{Wm z>I9J78J7$hvtGpTj4B&c#rb07I!pJKJ(Omj-CNWuvf!Z1qiK6zRdQlgbh|Z9(boSp zKI=i1whz=Z$?@Q;c7`C&;yxEed%~~qW9b1GzHiInVXz74MY)qJQuB7f{&7b0{2!~! zYhCHnxdWx)-5@W7anC{+Ab${CrB+01ab%jdAV+Eoj(1GWT;;$e9v$eqt2)u9B$j^$ zDhKW5s_-Cd^$#Ceh_2PoR*kt0FbS-%TJg}^2JS1y1PxC|i*L(sTrhbv;X?sWO>0$5hc6F ziFIEXGU=tMlU_S9Lq-K0_No%w{f$y;7s{^5vd)e!x!Sir6Q_zG!WpI{2>s3nIgQnw zB2*APQ^pS#$ewaaJwyYUT`+m`)E)?iO7r6cEz8qpVVLxR{p{?31tdf5f>mqzYxb3c z0ec&C5^?KDLP~h5a9l}bL!ztpeXQt~7err$YH5cnM z_td|MG-!{V+%UlrV&3%!k{ZUH9mRMg1t66=_~*h=9U2KkN(lIx>m~&cTn>=A$B<7_ zww_>QA5CBPrzOEftT_dT=^`8M8!Q_Pe!9L}J8x2|j}mvH7dp1eLVkL8L;3KFT8`bX zckbP})cx)9sN8rn`GN*@1$r%um_6vmQ6=Cn7-q4uj^F*+{T>VnAi^vOg%ZLr(VUqu0!y0`rn_fyUI)<65UBj7AK z&?mNjjm@b4E@=G!BCc3(_nh&UI3Ygr(*w0tqkvA_W=;+_`V{xCIU|oihr(Z+PN_b@an zUjiafyiF*<7mf_3Z!SE)ny@q2@MEf7W>JPHk*Tfpdx><|@i39-^#4|SrM`NJ@Yi?3 z8~v!?k;x$sg~$gjVm3USH%(3;djro~}Le1*&&f8{M*0rIRTPsswI*K86yF1(MyEtx;mK zSSY4PAw6NUn&+=0;A-D~(gXgiKEqa0Xf}fDN#-#tWt&_09U=q-dQG_MNi8HS?$09&MZqsB~TdS2mQnoe8xl5qDMH73Eq8eC z>2S&A|FtXAMiUESS$2f5^|xA&IGLs4HCF*#R+5E2)@vI(Es4yZ&@gvpt!CPa+fj~Q zoAm5I^$KWDByZD80Ae(8>6AjSdH70L@x8d0mtKl<4XHa7ZRy4ZXT_3SbWAW32nW7o zB~g^s78jcN%Lq}C<8r%vf|+fv)QcLG;XcsyhM9A{QK+Q|!jc1;6)5kO7=tsKGc>BW z=Z9%X(p4D#K9lsHf8B6=y7#g`t6?QIF%6x&*acBSebuM9nyprGYi1kf-CZ3>(#;L~ zCnb_;Td^U24U_I-Po!0X*VI%0>W;1-tInAN9dkg94=e0g{7j@zVPCVnNR2V=Wl`xo zTcKSvpQ|0$x#EJKzR9#@U?ILVM##3)R@K|^dVc6n)Zaf+1455Q2E{qt)7vqdXO~L< z&asq&$F)b-yx7Dm=#OJ5hDWo#gsAZA9)!KEBhdxUcYaG2SBkTUSr*iWG^N*F$GH=3 zFPyGuEfah6!{Z1Wo$5sFeHem)OrctrA*8`m?X&5MPxP!!@9r%QO_d5vq|g572vekH z4=XWMDB@+0$&c`vxTfsFKaPV<8HFF6#dpzC(f+sEw2*7jYsydce?y1q2B*}Ieeaj+ zwpPEpS1D-y#Vr*raQxj3szgSOBi=X`!^?7I;cdPDFJOACaNtrzTMr6<1~kx{P&->9 z#K=nf76FmXUFS2pWmYi*Rll_F%Ntcqop;kGH4U;UYgY`!XLjtZm$j>b(qHs{S)Y3`O|FQ zRgUm(IWDljV3(Yv>!r>TVEn(enTbyWmN|T%1Kr#_2UW0?g zA8nJd<@HDS+Cw;)AKb?>Q>uSqN}0S8zUf~e4GB9lgH~dk8+*la`0-*g7nM)nzQ4$5 zoX`}{cK`fBm?+r;ScL5!jE$G!Q8wG%)#DAh&ofOMzQ&H`S^px94gwQy*GIpI-)_7> zT-oin)jU+Pyn8Fy%IR1@@t{H$ChoBAHw0M`nUfYKoT6LV&2LVP#lCxJdFQ#9wjoPl zHGTK+5C$M|C)1)22_3_Y?Yaka zkwnW^7SSzOUbxFd9Z%4Vd=SGh_?J`}9@(ALcZ+_)&SZjS9!-9N5ofVif`%lg?eqD% zo}uUSsSw^Z(se(8t7O1>bLW!h_8)$(QrJLi@E?AfES_6$sE_X}V9{`Xd)0ng4aIlN ze`YM_a}}q1Q+#|5lCO{_1rmi9D*0(w3VCBjN=F_FxdPkr>-i!NGo5comGg+2653mkTn{#2X)eutpd>Bb}y%OKnZ7yIJ*&HRQ%j;V1ROnsa6?{I@qKFz>F#T?&xJA6OcSI>^j4JNrwGvNLazq3e1@5SQ{pSZ8?>buIq55N``5ghBYK8isfc0a>W?>2& z^FPAAiDJQm`JJent5`#ZY7?TRa-O_}G-sfP(mUzY=cBDY60F2wEh-t9uNj@;e~QrS z9*gXI?GY-p;zjBQ%Ht)vkWp*Pa^2DEwo=&ypP2{-seqoSe-%y4Db4$>JqdEa^a1-V z?830H+iybk(_=W+U9wKsY|FRsutUE?u5s;}dH6HkKbCdqzZW}Lu3^p`Rt4FES^sEC zJN%3!7KgE}OZ)#mK)-o1)kN{gW-TT1Z~F-!L^x?}@vd$cuN(Fx3e70Rsggs6r;B?Ym8&Zt^GQ zHolp_Sl!!>(hg&3rC7+El#G487JPS_3QzzCq&FXA2m6Mn-+iEoMaGnWsGtjfD#Z=4 zDmwKr7`!jzo`Wkoj<=Z|^xraW-%*h9U0nWms=|y{?tyOpKz&f`-#8?h)-S?>osYbwwkbbpwr3kj+%sz(FzB( zx2G>6{veAu=oDXP_iWM{3MF=miZI#e4V4`gUf(T0Kq5x1jORV_L=pUJjXI$wU`2An_eSR8oBjD7LtHV_Z zEC*ht4}o`e#)3*PRSq78k^7<;XTh4f^@0b-oS5?T^wPRd@3Aizua&I*@;!X){1iF2 zKDY(-+5mc`lN;(sGm(P=B5*mQC!x6kJH;0)XX#S~C>1dq_aWkNVID0H*#$7$?6>F; zhx@&`OVKalMjljdZ#l^{~qtFuFRr*I*{Hda|ExugfR5xJjL1qzEY^z z{I?ThaV7}y-+C-PJF$-X^9yBgUqN)cx9Mb7%2}dxvx53sk&no!lD#TUshRdFiK=*w zNcE8{8j+6P85`by;zeGHf-9%HTPg?IJ(^Jl-?Wu(J|}+)VDN=@dZ(Iid_QLJFO#Di zeCO8>pqG_$&N?AX+s^Fr{azPQ_QXZfZ{}Ya=_NN0P(Aj?rA;hTSr}NF@l#NLXwK}b z`F}R~65##6Y4btnu~Qx3nC3h3V9+OpaZ^2gJVSr@nUU1*k~*Mc=JE3T`qF3`wJdWX z$L*ftl)>M1P2EXe1L6^Krr_`ImbD5{8C@%Cnqk}tKU@o)6DGs&{`nB*!Ew<7-PwEX znyi`cNe*E%*&*KpXF?!y+y^yxnK19tH1pDp(DkQ4qeIE^$iacZCy~JMA*@ar;n}%( zEo2SJ>0Q8GsJ<_TWLfd{V#mq*RjB%C7b<*G$4Uln`CfDDli;N>s~h3JuAtsHQvrg7 zv3QXX&~9t1-<#E?Ho147phsrk=kP_Z76R8_;aM|6Y+Wp7V=gLd?p}tI^tyMaKREnY z4pL0gV)Z;&F;rRlzsuC|lIks(^A6oJlvD<&UQnS>VvPx zX2rj}!`!p_kgoEl*|*&CIi-)~ z%)%`N7ceEi@M%oRXjjoU*uGbNMPiqmaQ9m6Td6ay39a`E2=25}E&K(`T5{kO+EdWg zaBMb=U_nuez7JH0%36q-`RiQ6^at#14 zLdXFXI?FM^TTL+H$HvkISM)q zLjmx=w##_cX3PJMl?^Nl*pM!k`wF;L+(kb#0nO!qW$NEHCHpIrr`F~d+E%83wynNb axg{U?UVODPe2k6p_~~dEsMo66#{3_wBX8sY diff --git a/assets/images/help/package-registry/packages-overview-diagram.png b/assets/images/help/package-registry/packages-overview-diagram.png index adf499d586ccd8ae55e24551dff9b1571fd331de..50f07869cc6f73eeee5717508f0f6a97abeb178a 100644 GIT binary patch literal 433859 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%0D9FT7Nw7(`f$X6{`x97KbSQ-UijV(;?G| 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 l6|N>o;mExtR%Ha0 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 literal 505214 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

    jN$&HK`r$zQ)ne?|jaegMwH>?<-ox3{v7@YcV~i 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

    90QSe?*E>WT5`*c6RF1U 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

    NJ?7CA9CD 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

    npq}GkVg}U?wHMc3%v@e?)b8--mWg!s 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 diff --git a/content/packages/learn-github-packages/about-github-packages.md b/content/packages/learn-github-packages/about-github-packages.md index b9b21493b8..3aa637f5d7 100644 --- a/content/packages/learn-github-packages/about-github-packages.md +++ b/content/packages/learn-github-packages/about-github-packages.md @@ -24,20 +24,13 @@ You can integrate {% data variables.product.prodname_registry %} with {% data va {% data variables.product.prodname_registry %} offers different package registries for commonly used packages, such as for Node, RubyGems, Apache Maven, Gradle, and Nuget. - -{% if currentVersion ver_gt "enterprise-server@2.21" %} - -![Diagram showing the GitHub Packages hosting urls for npm, RubyGems, Apache Maven, Gradle, Nuget, and Docker](/assets/images/help/package-registry/ghes-packages-diagram.png) - -{% endif %} +![Diagram showing packages support for npm, RubyGems, Apache Maven, Gradle, Nuget, and Docker](/assets/images/help/package-registry/packages-overview-diagram.png) {% if currentVersion == "free-pro-team@latest" %} {% data variables.product.prodname_registry %} also offers a {% data variables.product.prodname_container_registry %} designed to support the unique needs of container images. For more information, see "[About {% data variables.product.prodname_github_container_registry %}](/packages/guides/about-github-container-registry)." {% data reusables.package_registry.container-registry-beta %} -![Diagram showing the GitHub Packages hosting urls for npm, RubyGems, Apache Maven, Gradle, Nuget, and Docker](/assets/images/help/package-registry/packages-overview-diagram.png) - {% endif %} #### Viewing packages From 1d044030919f770f539f2a8b9357c367f5c014f3 Mon Sep 17 00:00:00 2001 From: Sarah Schneider Date: Wed, 17 Mar 2021 11:58:36 -0400 Subject: [PATCH 30/37] rerun CI From 0192f59031a0ba4fc4e3f2e0bd9f4d148d88ac73 Mon Sep 17 00:00:00 2001 From: Alena Sviridenko Date: Wed, 17 Mar 2021 20:30:30 +0300 Subject: [PATCH 31/37] [March 17] Remove all notes about ubuntu-latest migration and fix labels (#18243) Co-authored-by: Sarah Edwards --- .../actions/reference/workflow-syntax-for-github-actions.md | 1 - .../about-github-hosted-runners.md | 1 - data/reusables/github-actions/supported-github-runners.md | 4 ++-- data/reusables/github-actions/ubuntu-runner-preview.md | 5 ----- 4 files changed, 2 insertions(+), 9 deletions(-) delete mode 100644 data/reusables/github-actions/ubuntu-runner-preview.md diff --git a/content/actions/reference/workflow-syntax-for-github-actions.md b/content/actions/reference/workflow-syntax-for-github-actions.md index 9883e1bca3..c5431f7372 100644 --- a/content/actions/reference/workflow-syntax-for-github-actions.md +++ b/content/actions/reference/workflow-syntax-for-github-actions.md @@ -314,7 +314,6 @@ Available {% data variables.product.prodname_dotcom %}-hosted runner types are: {% data reusables.github-actions.supported-github-runners %} -{% data reusables.github-actions.ubuntu-runner-preview %} {% data reusables.github-actions.macos-runner-preview %} ##### Example diff --git a/content/actions/using-github-hosted-runners/about-github-hosted-runners.md b/content/actions/using-github-hosted-runners/about-github-hosted-runners.md index bbcebb10c5..8a6228e0bb 100644 --- a/content/actions/using-github-hosted-runners/about-github-hosted-runners.md +++ b/content/actions/using-github-hosted-runners/about-github-hosted-runners.md @@ -55,7 +55,6 @@ Hardware specification for macOS virtual machines: {% data reusables.github-actions.supported-github-runners %} -{% data reusables.github-actions.ubuntu-runner-preview %} {% data reusables.github-actions.macos-runner-preview %} Workflow logs list the runner used to run a job. For more information, see "[Viewing workflow run history](/actions/managing-workflow-runs/viewing-workflow-run-history)." diff --git a/data/reusables/github-actions/supported-github-runners.md b/data/reusables/github-actions/supported-github-runners.md index 3af3da15cb..514e6e3e37 100644 --- a/data/reusables/github-actions/supported-github-runners.md +++ b/data/reusables/github-actions/supported-github-runners.md @@ -1,8 +1,8 @@ | Virtual environment | YAML workflow label | | --------------------|---------------------| | Windows Server 2019 | `windows-latest` or `windows-2019` | -| Ubuntu 20.04 | `ubuntu-latest` (see note) or `ubuntu-20.04` | -| Ubuntu 18.04 | `ubuntu-latest` (see note) or `ubuntu-18.04` | +| Ubuntu 20.04 | `ubuntu-latest` or `ubuntu-20.04` | +| Ubuntu 18.04 | `ubuntu-18.04` | | Ubuntu 16.04 | `ubuntu-16.04` | | macOS Big Sur 11.0 | `macos-11.0` | | macOS Catalina 10.15 | `macos-latest` or `macos-10.15` | diff --git a/data/reusables/github-actions/ubuntu-runner-preview.md b/data/reusables/github-actions/ubuntu-runner-preview.md deleted file mode 100644 index 6eb91edc13..0000000000 --- a/data/reusables/github-actions/ubuntu-runner-preview.md +++ /dev/null @@ -1,5 +0,0 @@ -{% note %} - -**Note:** The `ubuntu-latest` label is currently being migrated from the Ubuntu 18.04 virtual environment to Ubuntu 20.04. Specifying the `ubuntu-latest` label during the migration might use either virtual environment. To explicitly use Ubuntu 20.04 or Ubuntu 18.04, specify `ubuntu-20.04` or `ubuntu-18.04`. When the migration is complete, `ubuntu-latest` will use the Ubuntu 20.04 virtual environment. For more information about the migration, see "[Ubuntu-latest workflows will use Ubuntu-20.04](https://github.com/actions/virtual-environments/issues/1816)." - -{% endnote %} From b1b8cb8e84e9f281e71076d8895448d65676f62d Mon Sep 17 00:00:00 2001 From: Rachael Sewell Date: Wed, 17 Mar 2021 12:31:29 -0700 Subject: [PATCH 32/37] add topic frontmatter to articles (#18245) --- .../reference/usage-limits-billing-and-administration.md | 2 ++ ...thentication-for-users-outside-your-identity-provider.md | 2 ++ ...ting-users-for-your-github-enterprise-server-instance.md | 2 ++ .../admin/authentication/changing-authentication-methods.md | 2 ++ .../authentication/disabling-unauthenticated-sign-ups.md | 2 ++ content/admin/authentication/index.md | 4 +++- .../admin/authentication/using-built-in-authentication.md | 2 ++ content/admin/authentication/using-cas.md | 2 ++ content/admin/authentication/using-ldap.md | 2 ++ content/admin/authentication/using-saml.md | 2 ++ .../admin/configuration/about-enterprise-configuration.md | 2 ++ .../configuration/accessing-the-administrative-shell-ssh.md | 2 ++ .../admin/configuration/accessing-the-management-console.md | 2 ++ content/admin/configuration/command-line-utilities.md | 2 ++ content/admin/configuration/configuring-a-hostname.md | 2 ++ .../configuration/configuring-advanced-security-features.md | 2 ++ .../configuring-an-outbound-web-proxy-server.md | 2 ++ content/admin/configuration/configuring-applications.md | 2 ++ .../configuration/configuring-backups-on-your-appliance.md | 2 ++ .../configuration/configuring-built-in-firewall-rules.md | 2 ++ .../configuring-code-scanning-for-your-appliance.md | 2 ++ content/admin/configuration/configuring-dns-nameservers.md | 2 ++ .../configuration/configuring-email-for-notifications.md | 4 +++- .../configuring-github-pages-for-your-enterprise.md | 2 ++ content/admin/configuration/configuring-network-settings.md | 2 ++ content/admin/configuration/configuring-rate-limits.md | 2 ++ .../configuring-secret-scanning-for-your-appliance.md | 2 ++ ...ring-the-ip-address-using-the-virtual-machine-console.md | 2 ++ .../admin/configuration/configuring-time-synchronization.md | 2 ++ content/admin/configuration/configuring-tls.md | 2 ++ content/admin/configuration/configuring-your-enterprise.md | 4 +++- ...g-github-enterprise-server-to-github-enterprise-cloud.md | 2 ++ ...r-vulnerable-dependencies-on-github-enterprise-server.md | 2 ++ .../enabling-and-scheduling-maintenance-mode.md | 2 ++ ...-github-enterprise-server-and-github-enterprise-cloud.md | 2 ++ content/admin/configuration/enabling-private-mode.md | 2 ++ content/admin/configuration/enabling-subdomain-isolation.md | 2 ++ ...utions-between-github-enterprise-server-and-githubcom.md | 2 ++ ...search-between-github-enterprise-server-and-githubcom.md | 2 ++ content/admin/configuration/index.md | 4 +++- ...-github-enterprise-server-and-github-enterprise-cloud.md | 2 ++ .../managing-github-for-mobile-for-your-enterprise.md | 6 ++++-- content/admin/configuration/network-ports.md | 2 ++ content/admin/configuration/site-admin-dashboard.md | 2 ++ content/admin/configuration/troubleshooting-ssl-errors.md | 2 ++ .../using-github-enterprise-server-with-a-load-balancer.md | 2 ++ .../admin/configuration/validating-your-domain-settings.md | 2 ++ content/admin/enterprise-management/about-cluster-nodes.md | 2 ++ content/admin/enterprise-management/about-clustering.md | 2 ++ .../admin/enterprise-management/about-geo-replication.md | 2 ++ .../about-high-availability-configuration.md | 2 ++ .../accessing-the-monitor-dashboard.md | 2 ++ .../enterprise-management/cluster-network-configuration.md | 2 ++ .../admin/enterprise-management/configuring-clustering.md | 2 ++ content/admin/enterprise-management/configuring-collectd.md | 2 ++ ...nfiguring-high-availability-replication-for-a-cluster.md | 2 ++ .../enterprise-management/configuring-high-availability.md | 2 ++ .../creating-a-high-availability-replica.md | 2 ++ ...fferences-between-clustering-and-high-availability-ha.md | 2 ++ .../enabling-automatic-update-checks.md | 2 ++ .../enterprise-management/evacuating-a-cluster-node.md | 2 ++ .../increasing-cpu-or-memory-resources.md | 2 ++ .../enterprise-management/increasing-storage-capacity.md | 2 ++ content/admin/enterprise-management/index.md | 2 ++ .../admin/enterprise-management/initializing-the-cluster.md | 2 ++ .../initiating-a-failover-to-your-replica-appliance.md | 2 ++ .../initiating-a-failover-to-your-replica-cluster.md | 2 ++ .../migrating-from-github-enterprise-1110x-to-2123.md | 2 ++ .../admin/enterprise-management/monitoring-cluster-nodes.md | 2 ++ .../admin/enterprise-management/monitoring-using-snmp.md | 2 ++ .../enterprise-management/monitoring-your-appliance.md | 2 ++ .../enterprise-management/recommended-alert-thresholds.md | 2 ++ .../recovering-a-high-availability-configuration.md | 2 ++ .../removing-a-high-availability-replica.md | 2 ++ .../admin/enterprise-management/replacing-a-cluster-node.md | 2 ++ .../enterprise-management/setting-up-external-monitoring.md | 2 ++ .../updating-the-virtual-machine-and-physical-resources.md | 2 ++ content/admin/enterprise-management/upgrade-requirements.md | 2 ++ content/admin/enterprise-management/upgrading-a-cluster.md | 2 ++ .../upgrading-github-enterprise-server.md | 4 +++- .../enterprise-support/about-github-enterprise-support.md | 2 ++ ...t-github-premium-support-for-github-enterprise-server.md | 2 ++ .../about-github-premium-support-for-github-enterprise.md | 2 ++ .../about-support-for-advanced-security.md | 2 ++ content/admin/enterprise-support/index.md | 2 ++ content/admin/enterprise-support/overview.md | 3 +++ .../enterprise-support/preparing-to-submit-a-ticket.md | 4 +++- .../enterprise-support/providing-data-to-github-support.md | 2 ++ content/admin/enterprise-support/reaching-github-support.md | 2 ++ .../receiving-help-from-github-support.md | 3 +++ content/admin/enterprise-support/submitting-a-ticket.md | 2 ++ .../about-using-actions-on-github-enterprise-server.md | 2 ++ .../advanced-configuration-and-troubleshooting.md | 3 +++ ...-github-enterprise-server-with-github-actions-enabled.md | 2 ++ ...atic-access-to-githubcom-actions-using-github-connect.md | 2 ++ .../enabling-github-actions-for-github-enterprise-server.md | 3 +++ .../enabling-github-actions-with-amazon-s3-storage.md | 2 ++ .../enabling-github-actions-with-azure-blob-storage.md | 2 ++ ...ing-github-actions-with-minio-gateway-for-nas-storage.md | 2 ++ ...enforcing-github-actions-policies-for-your-enterprise.md | 2 ++ ...rted-with-github-actions-for-github-enterprise-server.md | 2 ++ .../github-actions/high-availability-for-github-actions.md | 2 ++ content/admin/github-actions/index.md | 2 ++ .../managing-access-to-actions-from-githubcom.md | 2 ++ .../manually-syncing-actions-from-githubcom.md | 2 ++ ...-cache-on-self-hosted-runners-without-internet-access.md | 2 ++ .../troubleshooting-github-actions-for-your-enterprise.md | 2 ++ content/admin/github-actions/using-a-staging-environment.md | 2 ++ content/admin/installation/index.md | 2 ++ .../installing-github-enterprise-server-on-aws.md | 2 ++ .../installing-github-enterprise-server-on-azure.md | 2 ++ ...ing-github-enterprise-server-on-google-cloud-platform.md | 2 ++ .../installing-github-enterprise-server-on-hyper-v.md | 2 ++ .../installing-github-enterprise-server-on-openstack-kvm.md | 2 ++ .../installing-github-enterprise-server-on-vmware.md | 2 ++ .../installing-github-enterprise-server-on-xenserver.md | 2 ++ .../setting-up-a-github-enterprise-server-instance.md | 2 ++ content/admin/installation/setting-up-a-staging-instance.md | 4 +++- content/admin/overview/about-enterprise-accounts.md | 2 ++ content/admin/overview/about-the-github-enterprise-api.md | 2 ++ content/admin/overview/about-upgrades-to-new-releases.md | 2 ++ .../admin/overview/managing-billing-for-your-enterprise.md | 4 +++- .../overview/managing-your-github-enterprise-license.md | 2 ++ content/admin/overview/system-overview.md | 2 ++ ...iguring-package-ecosystem-support-for-your-enterprise.md | 2 ++ content/admin/packages/enabling-github-packages-with-aws.md | 2 ++ .../enabling-github-packages-with-azure-blob-storage.md | 2 ++ .../admin/packages/enabling-github-packages-with-minio.md | 2 ++ ...ting-started-with-github-packages-for-your-enterprise.md | 2 ++ content/admin/packages/index.md | 2 ++ ...iguring-your-minio-storage-bucket-for-github-packages.md | 2 ++ content/admin/policies/about-pre-receive-hooks.md | 2 ++ .../policies/creating-a-pre-receive-hook-environment.md | 2 ++ .../admin/policies/creating-a-pre-receive-hook-script.md | 2 ++ .../policies/enforcing-policies-for-your-enterprise.md | 2 ++ .../policies/enforcing-policy-with-pre-receive-hooks.md | 2 ++ ...ing-repository-management-policies-in-your-enterprise.md | 4 +++- content/admin/policies/index.md | 2 ++ ...ceive-hooks-on-the-github-enterprise-server-appliance.md | 2 ++ content/admin/release-notes.md | 5 ++++- content/admin/user-management/about-migrations.md | 2 ++ content/admin/user-management/activity-dashboard.md | 4 +++- content/admin/user-management/adding-people-to-teams.md | 2 ++ content/admin/user-management/audit-logging.md | 4 +++- content/admin/user-management/audited-actions.md | 2 ++ content/admin/user-management/auditing-ssh-keys.md | 2 ++ .../auditing-users-across-your-enterprise.md | 2 ++ .../user-management/best-practices-for-user-security.md | 2 ++ ...onfiguring-git-large-file-storage-for-your-enterprise.md | 2 ++ .../configuring-visibility-for-organization-membership.md | 2 ++ .../user-management/continuous-integration-using-jenkins.md | 2 ++ content/admin/user-management/creating-teams.md | 2 ++ .../customizing-user-messages-for-your-enterprise.md | 2 ++ .../disabling-git-ssh-access-on-your-enterprise.md | 4 +++- .../exporting-migration-data-from-githubcom.md | 2 ++ .../exporting-migration-data-from-your-enterprise.md | 2 ++ ...porting-data-from-third-party-version-control-systems.md | 2 ++ content/admin/user-management/index.md | 2 ++ content/admin/user-management/log-forwarding.md | 2 ++ content/admin/user-management/managing-dormant-users.md | 4 +++- content/admin/user-management/managing-global-webhooks.md | 2 ++ .../managing-organizations-in-your-enterprise.md | 3 +++ .../admin/user-management/managing-projects-using-jira.md | 2 ++ .../managing-repositories-in-your-enterprise.md | 4 +++- .../user-management/managing-users-in-your-enterprise.md | 4 +++- .../migrating-data-to-and-from-your-enterprise.md | 2 ++ .../user-management/migrating-data-to-your-enterprise.md | 2 ++ .../user-management/migrating-to-internal-repositories.md | 2 ++ .../monitoring-activity-in-your-enterprise.md | 2 ++ .../placing-a-legal-hold-on-a-user-or-organization.md | 4 +++- .../preparing-to-migrate-data-to-your-enterprise.md | 2 ++ .../preventing-users-from-creating-organizations.md | 4 +++- .../promoting-or-demoting-a-site-administrator.md | 4 +++- .../admin/user-management/rebuilding-contributions-data.md | 2 ++ .../removing-users-from-teams-and-organizations.md | 2 ++ ...quiring-two-factor-authentication-for-an-organization.md | 2 ++ content/admin/user-management/searching-the-audit-log.md | 4 +++- .../user-management/suspending-and-unsuspending-users.md | 4 +++- .../admin/user-management/troubleshooting-service-hooks.md | 2 ++ content/admin/user-management/viewing-push-logs.md | 6 ++++-- content/developers/apps/about-apps.md | 2 ++ .../apps/activating-optional-features-for-apps.md | 2 ++ content/developers/apps/authenticating-with-github-apps.md | 2 ++ content/developers/apps/authorizing-oauth-apps.md | 2 ++ content/developers/apps/building-github-apps.md | 2 ++ content/developers/apps/building-oauth-apps.md | 3 ++- .../apps/creating-a-custom-badge-for-your-github-app.md | 2 ++ .../apps/creating-a-custom-badge-for-your-oauth-app.md | 2 ++ .../apps/creating-a-github-app-from-a-manifest.md | 2 ++ .../apps/creating-a-github-app-using-url-parameters.md | 2 ++ content/developers/apps/creating-a-github-app.md | 2 ++ content/developers/apps/creating-an-oauth-app.md | 2 ++ .../apps/creating-ci-tests-with-the-checks-api.md | 2 ++ content/developers/apps/deleting-a-github-app.md | 2 ++ content/developers/apps/deleting-an-oauth-app.md | 2 ++ .../apps/differences-between-github-apps-and-oauth-apps.md | 3 +++ .../developers/apps/editing-a-github-apps-permissions.md | 2 ++ content/developers/apps/getting-started-with-apps.md | 2 ++ content/developers/apps/guides.md | 2 ++ .../identifying-and-authorizing-users-for-github-apps.md | 2 ++ content/developers/apps/index.md | 2 ++ content/developers/apps/installing-github-apps.md | 2 ++ .../apps/making-a-github-app-public-or-private.md | 2 ++ content/developers/apps/managing-github-apps.md | 2 ++ content/developers/apps/managing-oauth-apps.md | 3 ++- .../developers/apps/migrating-oauth-apps-to-github-apps.md | 2 ++ content/developers/apps/modifying-a-github-app.md | 2 ++ content/developers/apps/modifying-an-oauth-app.md | 2 ++ content/developers/apps/rate-limits-for-github-apps.md | 2 ++ .../apps/refreshing-user-to-server-access-tokens.md | 2 ++ content/developers/apps/scopes-for-oauth-apps.md | 2 ++ .../developers/apps/setting-permissions-for-github-apps.md | 2 ++ ...p-your-development-environment-to-create-a-github-app.md | 2 ++ .../developers/apps/suspending-a-github-app-installation.md | 2 ++ .../apps/transferring-ownership-of-a-github-app.md | 2 ++ .../apps/transferring-ownership-of-an-oauth-app.md | 2 ++ .../apps/troubleshooting-authorization-request-errors.md | 2 ++ ...troubleshooting-oauth-app-access-token-request-errors.md | 2 ++ content/developers/apps/using-content-attachments.md | 2 ++ content/developers/apps/using-the-github-api-in-your-app.md | 2 ++ .../github-marketplace/about-github-marketplace.md | 2 ++ ...ying-for-publisher-verification-for-your-organization.md | 2 ++ content/developers/github-marketplace/billing-customers.md | 2 ++ .../configuring-a-webhook-to-notify-you-of-plan-changes.md | 2 ++ .../creating-apps-for-github-marketplace.md | 2 ++ .../customer-experience-best-practices-for-apps.md | 4 +++- .../github-marketplace/drafting-a-listing-for-your-app.md | 2 ++ .../handling-new-purchases-and-free-trials.md | 2 ++ .../github-marketplace/handling-plan-cancellations.md | 2 ++ .../developers/github-marketplace/handling-plan-changes.md | 2 ++ content/developers/github-marketplace/index.md | 2 ++ .../listing-an-app-on-github-marketplace.md | 2 ++ .../pricing-plans-for-github-marketplace-apps.md | 2 ++ .../receiving-payment-for-app-purchases.md | 2 ++ .../github-marketplace/requirements-for-listing-an-app.md | 2 ++ .../rest-endpoints-for-the-github-marketplace-api.md | 2 ++ .../github-marketplace/security-best-practices-for-apps.md | 2 ++ .../selling-your-app-on-github-marketplace.md | 2 ++ .../setting-pricing-plans-for-your-listing.md | 2 ++ .../submitting-your-listing-for-publication.md | 2 ++ content/developers/github-marketplace/testing-your-app.md | 2 ++ .../using-the-github-marketplace-api-in-your-app.md | 2 ++ .../github-marketplace/viewing-metrics-for-your-listing.md | 2 ++ .../viewing-transactions-for-your-listing.md | 2 ++ .../webhook-events-for-the-github-marketplace-api.md | 2 ++ .../writing-a-listing-description-for-your-app.md | 2 ++ content/developers/overview/about-githubs-apis.md | 2 ++ content/developers/overview/github-developer-program.md | 2 ++ content/developers/overview/managing-deploy-keys.md | 2 ++ content/developers/overview/replacing-github-services.md | 2 ++ content/developers/overview/secret-scanning.md | 2 ++ content/developers/overview/using-ssh-agent-forwarding.md | 2 ++ content/developers/overview/viewing-deployment-history.md | 2 ++ content/developers/webhooks-and-events/about-webhooks.md | 2 ++ .../configuring-your-server-to-receive-payloads.md | 2 ++ content/developers/webhooks-and-events/creating-webhooks.md | 2 ++ content/developers/webhooks-and-events/events.md | 2 ++ .../developers/webhooks-and-events/github-event-types.md | 2 ++ content/developers/webhooks-and-events/index.md | 3 +++ content/developers/webhooks-and-events/issue-event-types.md | 2 ++ .../webhooks-and-events/securing-your-webhooks.md | 2 ++ content/developers/webhooks-and-events/testing-webhooks.md | 2 ++ .../webhooks-and-events/webhook-events-and-payloads.md | 2 ++ content/developers/webhooks-and-events/webhooks.md | 2 ++ .../about-dependabot-version-updates.md | 3 ++- ...out-email-notifications-for-pushes-to-your-repository.md | 2 ++ .../about-merge-methods-on-github.md | 2 ++ .../administering-a-repository/about-protected-branches.md | 2 ++ content/github/administering-a-repository/about-releases.md | 2 ++ .../administering-a-repository/about-secret-scanning.md | 2 ++ .../about-securing-your-repository.md | 2 ++ .../automation-for-release-forms-with-query-parameters.md | 2 ++ .../changing-the-default-branch.md | 2 ++ .../classifying-your-repository-with-topics.md | 2 ++ .../github/administering-a-repository/comparing-releases.md | 2 ++ .../configuration-options-for-dependency-updates.md | 2 ++ ...configuring-autolinks-to-reference-external-resources.md | 2 ++ .../configuring-commit-rebasing-for-pull-requests.md | 2 ++ .../configuring-commit-squashing-for-pull-requests.md | 2 ++ .../configuring-pull-request-merges.md | 2 ++ .../configuring-secret-scanning-for-your-repositories.md | 2 ++ ...-github-actions-artifacts-and-logs-in-your-repository.md | 2 ++ .../customizing-dependency-updates.md | 2 ++ .../customizing-how-changed-files-appear-on-github.md | 2 ++ .../customizing-your-repositorys-social-media-preview.md | 2 ++ .../defining-the-mergeability-of-pull-requests.md | 2 ++ .../administering-a-repository/deleting-a-repository.md | 2 ++ .../deleting-and-restoring-branches-in-a-pull-request.md | 2 ++ ...disabling-or-limiting-github-actions-for-a-repository.md | 2 ++ .../displaying-a-sponsor-button-in-your-repository.md | 2 ++ .../enabling-and-disabling-version-updates.md | 2 ++ ...ling-or-disabling-github-discussions-for-a-repository.md | 2 ++ content/github/administering-a-repository/index.md | 2 ++ .../keeping-your-actions-up-to-date-with-dependabot.md | 2 ++ .../keeping-your-dependencies-updated-automatically.md | 2 ++ .../administering-a-repository/linking-to-releases.md | 2 ++ .../listing-dependencies-configured-for-version-updates.md | 2 ++ .../managing-a-branch-protection-rule.md | 2 ++ .../managing-alerts-from-secret-scanning.md | 2 ++ ...aging-auto-merge-for-pull-requests-in-your-repository.md | 4 +++- .../managing-branches-in-your-repository.md | 2 ++ ...naging-git-lfs-objects-in-archives-of-your-repository.md | 2 ++ .../managing-pull-requests-for-dependency-updates.md | 2 ++ .../managing-releases-in-a-repository.md | 2 ++ .../managing-repository-settings.md | 2 ++ ...ng-security-and-analysis-settings-for-your-repository.md | 2 ++ ...aging-teams-and-people-with-access-to-your-repository.md | 2 ++ .../managing-the-automatic-deletion-of-branches.md | 2 ++ .../managing-the-forking-policy-for-your-repository.md | 2 ++ .../releasing-projects-on-github.md | 2 ++ .../github/administering-a-repository/renaming-a-branch.md | 2 ++ .../administering-a-repository/renaming-a-repository.md | 2 ++ .../restoring-a-deleted-repository.md | 2 ++ .../administering-a-repository/securing-your-repository.md | 2 ++ .../setting-repository-visibility.md | 2 ++ .../administering-a-repository/transferring-a-repository.md | 2 ++ .../troubleshooting-required-status-checks.md | 4 +++- .../viewing-branches-in-your-repository.md | 2 ++ .../viewing-deployment-activity-for-your-repository.md | 2 ++ .../viewing-your-repositorys-releases-and-tags.md | 2 ++ .../authenticating-to-github/about-anonymized-image-urls.md | 3 +++ .../about-authentication-to-github.md | 3 +++ .../about-authentication-with-saml-single-sign-on.md | 2 ++ .../about-commit-signature-verification.md | 3 +++ .../authenticating-to-github/about-githubs-ip-addresses.md | 3 +++ content/github/authenticating-to-github/about-ssh.md | 2 ++ .../about-two-factor-authentication.md | 2 ++ .../accessing-github-using-two-factor-authentication.md | 2 ++ .../adding-a-new-gpg-key-to-your-github-account.md | 3 +++ .../adding-a-new-ssh-key-to-your-github-account.md | 2 ++ .../associating-an-email-with-your-gpg-key.md | 3 +++ .../authenticating-with-saml-single-sign-on.md | 2 ++ ...ersonal-access-token-for-use-with-saml-single-sign-on.md | 2 ++ ...thorizing-an-ssh-key-for-use-with-saml-single-sign-on.md | 2 ++ .../authenticating-to-github/authorizing-oauth-apps.md | 3 +++ ...uthentication-delivery-methods-for-your-mobile-device.md | 2 ++ .../checking-for-existing-gpg-keys.md | 3 +++ .../checking-for-existing-ssh-keys.md | 2 ++ ...ing-your-commit-and-tag-signature-verification-status.md | 3 +++ ...onfiguring-two-factor-authentication-recovery-methods.md | 2 ++ .../configuring-two-factor-authentication.md | 2 ++ .../connecting-to-github-with-ssh.md | 2 ++ .../connecting-with-third-party-applications.md | 3 +++ .../countries-where-sms-authentication-is-supported.md | 2 ++ .../creating-a-personal-access-token.md | 3 +++ .../authenticating-to-github/creating-a-strong-password.md | 3 +++ .../authenticating-to-github/deleted-or-missing-ssh-keys.md | 2 ++ ...g-two-factor-authentication-for-your-personal-account.md | 2 ++ .../error-agent-admitted-failure-to-sign.md | 2 ++ .../authenticating-to-github/error-bad-file-number.md | 2 ++ .../authenticating-to-github/error-key-already-in-use.md | 2 ++ .../error-permission-denied-publickey.md | 2 ++ .../error-permission-to-userrepo-denied-to-other-user.md | 2 ++ ...error-permission-to-userrepo-denied-to-userother-repo.md | 2 ++ .../error-ssh-add-illegal-option----k.md | 2 ++ ...ssl-certificate-problem-verify-that-the-ca-cert-is-ok.md | 2 ++ .../error-were-doing-an-ssh-key-audit.md | 2 ++ .../authenticating-to-github/generating-a-new-gpg-key.md | 3 +++ ...nerating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md | 2 ++ .../githubs-ssh-key-fingerprints.md | 3 +++ content/github/authenticating-to-github/index.md | 6 ++++++ .../keeping-your-account-and-data-secure.md | 3 +++ .../managing-commit-signature-verification.md | 3 +++ .../preventing-unauthorized-access.md | 3 +++ ...overing-your-account-if-you-lose-your-2fa-credentials.md | 2 ++ .../recovering-your-ssh-key-passphrase.md | 2 ++ .../removing-sensitive-data-from-a-repository.md | 3 +++ .../reviewing-your-authorized-applications-oauth.md | 3 +++ .../reviewing-your-authorized-integrations.md | 3 +++ .../authenticating-to-github/reviewing-your-deploy-keys.md | 3 +++ .../authenticating-to-github/reviewing-your-security-log.md | 3 +++ .../authenticating-to-github/reviewing-your-ssh-keys.md | 3 +++ ...uring-your-account-with-two-factor-authentication-2fa.md | 2 ++ content/github/authenticating-to-github/signing-commits.md | 3 +++ content/github/authenticating-to-github/signing-tags.md | 3 +++ content/github/authenticating-to-github/sudo-mode.md | 3 +++ .../telling-git-about-your-signing-key.md | 5 ++++- .../authenticating-to-github/testing-your-ssh-connection.md | 2 ++ .../troubleshooting-commit-signature-verification.md | 3 +++ .../github/authenticating-to-github/troubleshooting-ssh.md | 2 ++ .../authenticating-to-github/updating-an-expired-gpg-key.md | 3 +++ .../updating-your-github-access-credentials.md | 3 +++ .../using-a-verified-email-address-in-your-gpg-key.md | 3 +++ .../using-ssh-over-the-https-port.md | 2 ++ .../viewing-and-managing-your-active-saml-sessions.md | 4 +++- .../working-with-ssh-key-passphrases.md | 2 ++ .../about-community-management-and-moderation.md | 2 ++ .../about-community-profiles-for-public-repositories.md | 2 ++ .../about-issue-and-pull-request-templates.md | 2 ++ content/github/building-a-strong-community/about-wikis.md | 2 ++ .../accessing-a-projects-community-profile.md | 2 ++ .../adding-a-code-of-conduct-to-your-project.md | 2 ++ .../adding-a-license-to-a-repository.md | 2 ++ .../adding-or-editing-wiki-pages.md | 2 ++ .../adding-support-resources-to-your-project.md | 2 ++ .../blocking-a-user-from-your-organization.md | 2 ++ .../blocking-a-user-from-your-personal-account.md | 2 ++ .../changing-access-permissions-for-wikis.md | 2 ++ .../configuring-issue-templates-for-your-repository.md | 2 ++ .../creating-a-default-community-health-file.md | 2 ++ .../creating-a-footer-or-sidebar-for-your-wiki.md | 2 ++ .../creating-a-pull-request-template-for-your-repository.md | 2 ++ .../github/building-a-strong-community/disabling-wikis.md | 2 ++ .../documenting-your-project-with-wikis.md | 2 ++ .../building-a-strong-community/editing-wiki-content.md | 2 ++ ...ing-helpful-contributions-to-your-project-with-labels.md | 2 ++ content/github/building-a-strong-community/index.md | 2 ++ .../limiting-interactions-for-your-user-account.md | 6 ++++-- .../limiting-interactions-in-your-organization.md | 4 +++- .../limiting-interactions-in-your-repository.md | 4 +++- .../building-a-strong-community/locking-conversations.md | 2 ++ .../maintaining-your-safety-on-github.md | 2 ++ .../managing-disruptive-comments.md | 2 ++ ...ibutors-report-abuse-in-your-organizations-repository.md | 2 ++ ...ing-reported-content-in-your-organizations-repository.md | 2 ++ ...-creating-a-single-issue-template-for-your-repository.md | 2 ++ .../moderating-comments-and-conversations.md | 2 ++ .../building-a-strong-community/reporting-abuse-or-spam.md | 2 ++ .../setting-guidelines-for-repository-contributors.md | 2 ++ .../setting-up-your-project-for-healthy-contributions.md | 2 ++ .../tracking-changes-in-a-comment.md | 2 ++ .../unblocking-a-user-from-your-organization.md | 2 ++ .../unblocking-a-user-from-your-personal-account.md | 2 ++ ...emplates-to-encourage-useful-issues-and-pull-requests.md | 2 ++ .../viewing-a-wikis-history-of-changes.md | 2 ++ .../viewing-users-who-are-blocked-from-your-organization.md | 2 ++ ...iewing-users-youve-blocked-from-your-personal-account.md | 2 ++ .../about-branches.md | 2 ++ .../about-collaborative-development-models.md | 2 ++ .../about-comparing-branches-in-pull-requests.md | 2 ++ .../about-conversations-on-github.md | 2 ++ .../about-forks.md | 2 ++ .../about-merge-conflicts.md | 2 ++ .../about-pull-request-merges.md | 2 ++ .../about-pull-request-reviews.md | 2 ++ .../about-pull-requests.md | 2 ++ .../about-status-checks.md | 2 ++ .../addressing-merge-conflicts.md | 2 ++ ...-changes-to-a-pull-request-branch-created-from-a-fork.md | 2 ++ .../approving-a-pull-request-with-required-reviews.md | 2 ++ .../automatically-merging-a-pull-request.md | 4 +++- .../changing-the-base-branch-of-a-pull-request.md | 2 ++ .../changing-the-stage-of-a-pull-request.md | 2 ++ .../checking-out-pull-requests-locally.md | 2 ++ .../closing-a-pull-request.md | 2 ++ ...laborating-on-repositories-with-code-quality-features.md | 2 ++ .../commenting-on-a-pull-request.md | 2 ++ ...-changes-to-a-pull-request-branch-created-from-a-fork.md | 2 ++ .../configuring-a-remote-for-a-fork.md | 2 ++ .../creating-a-pull-request-from-a-fork.md | 2 ++ .../creating-a-pull-request.md | 2 ++ ...creating-and-deleting-branches-within-your-repository.md | 2 ++ .../dismissing-a-pull-request-review.md | 4 +++- .../filtering-files-in-a-pull-request.md | 2 ++ ...nding-changed-methods-and-functions-in-a-pull-request.md | 2 ++ .../github-flow.md | 2 ++ .../incorporating-changes-from-a-pull-request.md | 2 ++ .../incorporating-feedback-in-your-pull-request.md | 2 ++ .../collaborating-with-issues-and-pull-requests/index.md | 2 ++ .../merging-a-pull-request.md | 2 ++ .../merging-an-upstream-repository-into-your-fork.md | 2 ++ .../collaborating-with-issues-and-pull-requests/overview.md | 2 ++ .../proposing-changes-to-your-work-with-pull-requests.md | 2 ++ .../requesting-a-pull-request-review.md | 2 ++ .../resolving-a-merge-conflict-on-github.md | 2 ++ .../resolving-a-merge-conflict-using-the-command-line.md | 2 ++ .../reverting-a-pull-request.md | 2 ++ .../reviewing-changes-in-pull-requests.md | 2 ++ .../reviewing-dependency-changes-in-a-pull-request.md | 2 ++ .../reviewing-proposed-changes-in-a-pull-request.md | 2 ++ .../syncing-a-fork.md | 2 ++ .../viewing-a-pull-request-review.md | 2 ++ ...ks-when-a-repository-is-deleted-or-changes-visibility.md | 2 ++ .../working-with-forks.md | 2 ++ .../about-archiving-content-and-data-on-github.md | 2 ++ .../about-archiving-repositories.md | 2 ++ .../about-code-owners.md | 2 ++ .../about-readmes.md | 2 ++ .../about-repositories.md | 2 ++ .../about-repository-languages.md | 2 ++ .../about-repository-visibility.md | 2 ++ .../archiving-a-github-repository.md | 2 ++ .../archiving-repositories.md | 2 ++ .../backing-up-a-repository.md | 2 ++ .../cloning-a-repository-from-github.md | 2 ++ .../cloning-a-repository.md | 2 ++ .../creating-a-new-repository.md | 2 ++ .../creating-a-repository-from-a-template.md | 2 ++ .../creating-a-repository-on-github.md | 2 ++ .../creating-a-template-repository.md | 2 ++ .../creating-an-issues-only-repository.md | 2 ++ .../duplicating-a-repository.md | 2 ++ ...ote-head-refers-to-nonexistent-ref-unable-to-checkout.md | 2 ++ .../error-repository-not-found.md | 2 ++ .../https-cloning-errors.md | 2 ++ .../creating-cloning-and-archiving-repositories/index.md | 2 ++ .../licensing-a-repository.md | 2 ++ .../limits-for-viewing-content-and-diffs-in-a-repository.md | 2 ++ .../referencing-and-citing-content.md | 2 ++ .../about-billing-for-codespaces.md | 2 ++ .../developing-online-with-codespaces/about-codespaces.md | 2 ++ .../configuring-codespaces-for-your-project.md | 2 ++ .../creating-a-codespace.md | 2 ++ .../deleting-a-codespace.md | 2 ++ .../developing-in-a-codespace.md | 2 ++ content/github/developing-online-with-codespaces/index.md | 2 ++ .../managing-access-and-security-for-codespaces.md | 2 ++ .../managing-encrypted-secrets-for-codespaces.md | 4 +++- .../managing-gpg-verification-for-codespaces.md | 4 +++- .../personalizing-codespaces-for-your-account.md | 2 ++ .../troubleshooting-your-codespace.md | 2 ++ .../using-codespaces-in-visual-studio-code.md | 2 ++ .../using-codespaces-in-visual-studio.md | 2 ++ .../about-code-scanning.md | 2 ++ .../about-integration-with-code-scanning.md | 2 ++ ...lly-scanning-your-code-for-vulnerabilities-and-errors.md | 2 ++ .../configuring-code-scanning.md | 2 ++ .../configuring-codeql-code-scanning-in-your-ci-system.md | 2 ++ ...onfiguring-the-codeql-workflow-for-compiled-languages.md | 2 ++ .../index.md | 2 ++ .../integrating-with-code-scanning.md | 2 ++ .../running-codeql-code-scanning-in-a-container.md | 2 ++ .../running-codeql-code-scanning-in-your-ci-system.md | 2 ++ .../sarif-support-for-code-scanning.md | 2 ++ .../setting-up-code-scanning-for-a-repository.md | 2 ++ .../triaging-code-scanning-alerts-in-pull-requests.md | 2 ++ ...roubleshooting-codeql-code-scanning-in-your-ci-system.md | 2 ++ .../troubleshooting-the-codeql-workflow.md | 4 +++- .../uploading-a-sarif-file-to-github.md | 2 ++ ...ing-codeql-code-scanning-with-your-existing-ci-system.md | 2 ++ .../finding-talent-with-github-jobs/about-github-jobs.md | 2 ++ content/github/finding-talent-with-github-jobs/index.md | 2 ++ .../about-github-advanced-security.md | 2 ++ .../access-permissions-on-github.md | 3 +++ content/github/getting-started-with-github/be-social.md | 6 ++++++ content/github/getting-started-with-github/create-a-repo.md | 5 +++++ .../exploring-early-access-releases-with-feature-preview.md | 2 ++ .../exploring-projects-on-github.md | 2 ++ .../faq-about-changes-to-githubs-plans.md | 2 ++ .../finding-ways-to-contribute-to-open-source-on-github.md | 2 ++ .../github/getting-started-with-github/following-people.md | 2 ++ content/github/getting-started-with-github/fork-a-repo.md | 5 +++++ content/github/getting-started-with-github/github-cli.md | 2 ++ .../github/getting-started-with-github/github-desktop.md | 2 ++ .../github/getting-started-with-github/github-for-mobile.md | 2 ++ .../github/getting-started-with-github/githubs-products.md | 6 ++++++ content/github/getting-started-with-github/index.md | 5 +++++ .../getting-started-with-github/learning-about-github.md | 6 ++++++ content/github/getting-started-with-github/quickstart.md | 5 +++++ .../saving-repositories-with-stars.md | 2 ++ content/github/getting-started-with-github/set-up-git.md | 5 +++++ .../setting-up-a-trial-of-github-enterprise-cloud.md | 2 ++ .../setting-up-a-trial-of-github-enterprise-server.md | 2 ++ .../signing-up-for-a-new-github-account.md | 2 ++ .../getting-started-with-github/signing-up-for-github.md | 2 ++ .../getting-started-with-github/types-of-github-accounts.md | 6 ++++++ .../verifying-your-email-address.md | 2 ++ .../github/managing-files-in-a-repository/3d-file-viewer.md | 2 ++ .../adding-a-file-to-a-repository-using-the-command-line.md | 2 ++ .../adding-a-file-to-a-repository.md | 2 ++ .../managing-files-in-a-repository/creating-new-files.md | 2 ++ .../deleting-files-in-a-repository.md | 6 ++++-- .../editing-files-in-another-users-repository.md | 2 ++ .../editing-files-in-your-repository.md | 2 ++ .../getting-permanent-links-to-files.md | 2 ++ content/github/managing-files-in-a-repository/index.md | 2 ++ .../managing-files-on-github.md | 2 ++ .../managing-files-using-the-command-line.md | 2 ++ .../mapping-geojson-files-on-github.md | 2 ++ ...oving-a-file-to-a-new-location-using-the-command-line.md | 2 ++ .../moving-a-file-to-a-new-location.md | 2 ++ .../navigating-code-on-github.md | 2 ++ .../renaming-a-file-using-the-command-line.md | 2 ++ .../managing-files-in-a-repository/renaming-a-file.md | 2 ++ .../rendering-and-diffing-images.md | 2 ++ .../rendering-csv-and-tsv-data.md | 2 ++ .../rendering-differences-in-prose-documents.md | 2 ++ .../rendering-pdf-documents.md | 2 ++ .../tracking-changes-in-a-file.md | 2 ++ .../working-with-jupyter-notebook-files-on-github.md | 2 ++ .../working-with-non-code-files.md | 2 ++ .../about-alerts-for-vulnerable-dependencies.md | 2 ++ .../about-dependabot-security-updates.md | 4 +++- .../about-github-security-advisories.md | 2 ++ .../about-managing-vulnerable-dependencies.md | 2 ++ .../adding-a-collaborator-to-a-security-advisory.md | 2 ++ .../adding-a-security-policy-to-your-repository.md | 2 ++ ...urity-vulnerabilities-in-the-github-advisory-database.md | 2 ++ ...rary-private-fork-to-resolve-a-security-vulnerability.md | 2 ++ .../configuring-dependabot-security-updates.md | 2 ++ ...configuring-notifications-for-vulnerable-dependencies.md | 2 ++ .../creating-a-security-advisory.md | 2 ++ .../editing-a-security-advisory.md | 2 ++ content/github/managing-security-vulnerabilities/index.md | 2 ++ ...anaging-vulnerabilities-in-your-projects-dependencies.md | 2 ++ .../permission-levels-for-security-advisories.md | 2 ++ .../publishing-a-security-advisory.md | 2 ++ .../removing-a-collaborator-from-a-security-advisory.md | 2 ++ .../troubleshooting-dependabot-errors.md | 2 ++ ...ubleshooting-the-detection-of-vulnerable-dependencies.md | 2 ++ ...d-updating-vulnerable-dependencies-in-your-repository.md | 2 ++ .../withdrawing-a-security-advisory.md | 2 ++ .../about-notifications.md | 2 ++ .../configuring-notifications.md | 2 ++ ...ustomizing-a-workflow-for-triaging-your-notifications.md | 2 ++ .../index.md | 2 ++ .../managing-notifications-from-your-inbox.md | 2 ++ .../managing-subscriptions-for-activity-on-github.md | 2 ++ .../managing-your-subscriptions.md | 2 ++ .../setting-up-notifications.md | 2 ++ .../triaging-a-single-notification.md | 2 ++ .../viewing-and-triaging-notifications.md | 2 ++ .../viewing-your-subscriptions.md | 2 ++ ...on-for-issues-and-pull-requests-with-query-parameters.md | 2 ++ .../about-automation-for-project-boards.md | 2 ++ .../about-duplicate-issues-and-pull-requests.md | 2 ++ content/github/managing-your-work-on-github/about-issues.md | 2 ++ .../github/managing-your-work-on-github/about-milestones.md | 2 ++ .../managing-your-work-on-github/about-project-boards.md | 2 ++ .../github/managing-your-work-on-github/about-task-lists.md | 2 ++ .../adding-issues-and-pull-requests-to-a-project-board.md | 2 ++ .../adding-notes-to-a-project-board.md | 2 ++ .../archiving-cards-on-a-project-board.md | 2 ++ ...igning-issues-and-pull-requests-to-other-github-users.md | 2 ++ .../associating-milestones-with-issues-and-pull-requests.md | 2 ++ .../changing-project-board-visibility.md | 2 ++ .../managing-your-work-on-github/closing-a-project-board.md | 2 ++ .../configuring-automation-for-project-boards.md | 2 ++ .../managing-your-work-on-github/copying-a-project-board.md | 2 ++ .../creating-a-permanent-link-to-a-code-snippet.md | 2 ++ .../creating-a-project-board.md | 2 ++ .../managing-your-work-on-github/creating-an-issue.md | 4 +++- ...g-and-editing-milestones-for-issues-and-pull-requests.md | 2 ++ .../deleting-a-project-board.md | 2 ++ .../managing-your-work-on-github/deleting-an-issue.md | 2 ++ .../github/managing-your-work-on-github/disabling-issues.md | 2 ++ .../disabling-project-boards-in-a-repository.md | 2 ++ .../disabling-project-boards-in-your-organization.md | 2 ++ .../managing-your-work-on-github/editing-a-project-board.md | 2 ++ .../file-attachments-on-issues-and-pull-requests.md | 2 ++ .../filtering-cards-on-a-project-board.md | 2 ++ .../filtering-issues-and-pull-requests-by-assignees.md | 2 ++ .../filtering-issues-and-pull-requests-by-labels.md | 2 ++ .../filtering-issues-and-pull-requests-by-milestone.md | 2 ++ .../filtering-issues-and-pull-requests.md | 2 ++ .../filtering-pull-requests-by-review-status.md | 2 ++ .../finding-information-in-a-repository.md | 2 ++ content/github/managing-your-work-on-github/index.md | 2 ++ .../linking-a-pull-request-to-an-issue.md | 4 +++- .../linking-a-repository-to-a-project-board.md | 2 ++ .../github/managing-your-work-on-github/managing-labels.md | 2 ++ .../managing-your-work-on-github/managing-project-boards.md | 2 ++ .../managing-your-work-with-issues-and-pull-requests.md | 2 ++ .../opening-an-issue-from-a-comment.md | 4 +++- .../opening-an-issue-from-code.md | 4 +++- .../pinning-an-issue-to-your-repository.md | 2 ++ .../reopening-a-closed-project-board.md | 2 ++ .../github/managing-your-work-on-github/sharing-filters.md | 2 ++ .../sorting-issues-and-pull-requests.md | 2 ++ .../tracking-progress-on-your-project-board.md | 2 ++ .../tracking-the-progress-of-your-work-with-milestones.md | 2 ++ ...racking-the-progress-of-your-work-with-project-boards.md | 2 ++ .../transferring-an-issue-to-another-repository.md | 2 ++ .../using-search-to-filter-issues-and-pull-requests.md | 2 ++ .../viewing-all-of-your-issues-and-pull-requests.md | 2 ++ .../viewing-your-milestones-progress.md | 2 ++ .../about-searching-on-github.md | 2 ++ ...thubcom-repository-search-in-github-enterprise-server.md | 2 ++ .../finding-files-on-github.md | 2 ++ .../getting-started-with-searching-on-github.md | 2 ++ content/github/searching-for-information-on-github/index.md | 2 ++ .../searching-for-information-on-github/searching-code.md | 2 ++ .../searching-commits.md | 2 ++ .../searching-discussions.md | 4 +++- .../searching-for-packages.md | 2 ++ .../searching-for-repositories.md | 2 ++ .../searching-github-marketplace.md | 2 ++ .../searching-in-forks.md | 2 ++ .../searching-issues-and-pull-requests.md | 2 ++ .../searching-on-github.md | 2 ++ .../searching-for-information-on-github/searching-topics.md | 2 ++ .../searching-for-information-on-github/searching-users.md | 2 ++ .../searching-for-information-on-github/searching-wikis.md | 2 ++ .../sorting-search-results.md | 2 ++ .../troubleshooting-search-queries.md | 2 ++ .../understanding-the-search-syntax.md | 2 ++ .../about-billing-for-git-large-file-storage.md | 2 ++ .../about-billing-for-github-accounts.md | 2 ++ .../about-billing-for-github-actions.md | 2 ++ .../about-billing-for-github-marketplace.md | 2 ++ .../about-billing-for-github-packages.md | 2 ++ .../about-billing-for-github-sponsors.md | 2 ++ .../about-billing-on-github.md | 2 ++ .../about-organizations-for-procurement-companies.md | 2 ++ .../about-per-user-pricing.md | 2 ++ .../adding-information-to-your-receipts.md | 2 ++ .../adding-or-editing-a-payment-method.md | 2 ++ .../canceling-a-github-marketplace-app.md | 2 ++ .../changing-the-duration-of-your-billing-cycle.md | 2 ++ ...-and-paying-for-an-organization-on-behalf-of-a-client.md | 2 ++ .../discounted-subscriptions-for-github-accounts.md | 2 ++ .../downgrading-a-sponsorship.md | 2 ++ .../downgrading-git-large-file-storage.md | 2 ++ ...grading-the-billing-plan-for-a-github-marketplace-app.md | 2 ++ .../downgrading-your-github-subscription.md | 2 ++ ...s-upgrading-or-downgrading-affect-the-billing-process.md | 2 ++ .../index.md | 2 ++ .../managing-billing-for-git-large-file-storage.md | 2 ++ .../managing-billing-for-github-actions.md | 2 ++ .../managing-billing-for-github-marketplace-apps.md | 2 ++ .../managing-billing-for-github-packages.md | 2 ++ .../managing-billing-for-github-sponsors.md | 2 ++ .../managing-billing-for-your-github-account.md | 2 ++ .../managing-your-github-billing-settings.md | 2 ++ .../managing-your-spending-limit-for-github-actions.md | 2 ++ .../managing-your-spending-limit-for-github-packages.md | 2 ++ .../redeeming-a-coupon.md | 2 ++ .../removing-a-payment-method.md | 2 ++ .../renewing-your-clients-paid-organization.md | 2 ++ ...tting-up-paid-organizations-for-procurement-companies.md | 2 ++ .../setting-your-billing-email.md | 2 ++ .../troubleshooting-a-declined-credit-card-charge.md | 2 ++ .../unlocking-a-locked-account.md | 2 ++ .../upgrading-a-sponsorship.md | 4 +++- .../upgrading-git-large-file-storage.md | 2 ++ ...grading-or-downgrading-your-clients-paid-organization.md | 2 ++ ...grading-the-billing-plan-for-a-github-marketplace-app.md | 2 ++ .../upgrading-your-github-subscription.md | 2 ++ ...ing-and-managing-pending-changes-to-your-subscription.md | 2 ++ .../viewing-your-git-large-file-storage-usage.md | 2 ++ .../viewing-your-github-actions-usage.md | 2 ++ .../viewing-your-github-packages-usage.md | 2 ++ .../viewing-your-payment-history-and-receipts.md | 2 ++ .../viewing-your-subscriptions-and-billing-date.md | 2 ++ ...entity-and-access-management-with-saml-single-sign-on.md | 3 +++ .../about-oauth-app-access-restrictions.md | 3 +++ .../about-organizations.md | 3 +++ .../about-scim.md | 3 +++ .../about-ssh-certificate-authorities.md | 3 +++ .../about-team-discussions.md | 2 ++ .../about-teams.md | 3 +++ ...out-two-factor-authentication-and-saml-single-sign-on.md | 3 +++ .../about-your-organization-dashboard.md | 3 +++ .../about-your-organizations-news-feed.md | 3 +++ ...organization-if-your-identity-provider-is-unavailable.md | 3 +++ .../accessing-your-organizations-settings.md | 3 +++ .../adding-a-billing-manager-to-your-organization.md | 4 ++++ ...-collaborator-to-a-project-board-in-your-organization.md | 3 +++ .../adding-github-app-managers-in-your-organization.md | 3 +++ .../adding-organization-members-to-a-team.md | 3 +++ ...de-collaborators-to-repositories-in-your-organization.md | 3 +++ ...allowing-people-to-delete-issues-in-your-organization.md | 3 +++ .../approving-oauth-apps-for-your-organization.md | 3 +++ .../can-i-create-accounts-for-people-in-my-organization.md | 3 +++ ...o-become-an-outside-collaborator-in-your-organization.md | 3 +++ ...ng-or-editing-an-invitation-to-join-your-organization.md | 3 +++ .../changing-team-visibility.md | 3 +++ ...-visibility-of-your-organizations-dependency-insights.md | 3 +++ .../collaborating-with-groups-in-organizations.md | 3 +++ .../collaborating-with-your-team.md | 2 ++ .../configuring-saml-single-sign-on-and-scim-using-okta.md | 3 +++ ...ithub-actions-artifacts-and-logs-in-your-organization.md | 3 +++ ...onnecting-your-identity-provider-to-your-organization.md | 3 +++ ...ng-an-admin-team-to-improved-organization-permissions.md | 3 +++ .../converting-an-organization-into-a-user.md | 3 +++ ...ing-an-organization-member-to-an-outside-collaborator.md | 3 +++ ...ing-an-outside-collaborator-to-an-organization-member.md | 5 ++++- ...g-an-owners-team-to-improved-organization-permissions.md | 3 +++ .../creating-a-new-organization-from-scratch.md | 3 +++ .../creating-a-team-discussion.md | 2 ++ .../creating-a-team.md | 3 +++ .../deleting-a-team.md | 3 +++ .../deleting-an-organization-account.md | 3 +++ ...a-previously-approved-oauth-app-for-your-organization.md | 3 +++ ...g-oauth-app-access-restrictions-for-your-organization.md | 3 +++ ...ling-or-limiting-github-actions-for-your-organization.md | 3 +++ .../disabling-team-discussions-for-your-organization.md | 3 +++ ...your-organizations-saml-single-sign-on-recovery-codes.md | 3 +++ .../editing-or-deleting-a-team-discussion.md | 2 ++ ...and-testing-saml-single-sign-on-for-your-organization.md | 3 +++ ...g-oauth-app-access-restrictions-for-your-organization.md | 3 +++ .../enforcing-saml-single-sign-on-for-your-organization.md | 3 +++ ...team-maintainer-permissions-to-an-organization-member.md | 3 +++ ...-access-to-your-organization-with-saml-single-sign-on.md | 3 +++ .../index.md | 3 +++ .../inviting-users-to-join-your-organization.md | 3 +++ .../keeping-your-organization-secure.md | 3 +++ ...aintaining-ownership-continuity-for-your-organization.md | 3 +++ ...ng-access-to-a-project-board-for-organization-members.md | 3 +++ .../managing-access-to-your-organizations-apps.md | 3 +++ .../managing-access-to-your-organizations-project-boards.md | 3 +++ .../managing-access-to-your-organizations-repositories.md | 3 +++ .../managing-allowed-ip-addresses-for-your-organization.md | 3 +++ ...n-individuals-access-to-an-organization-project-board.md | 3 +++ ...g-an-individuals-access-to-an-organization-repository.md | 3 +++ ...ng-bots-and-service-accounts-with-saml-single-sign-on.md | 3 +++ .../managing-code-review-assignment-for-your-team.md | 3 +++ ...-default-labels-for-repositories-in-your-organization.md | 3 +++ ...ussion-creation-for-repositories-in-your-organization.md | 3 +++ ...anaging-git-access-to-your-organizations-repositories.md | 3 +++ .../managing-membership-in-your-organization.md | 3 +++ .../managing-organization-settings.md | 3 +++ ...naging-peoples-access-to-your-organization-with-roles.md | 3 +++ .../managing-saml-single-sign-on-for-your-organization.md | 3 +++ .../managing-scheduled-reminders-for-your-organization.md | 3 +++ .../managing-scheduled-reminders-for-your-team.md | 3 +++ ...-security-and-analysis-settings-for-your-organization.md | 3 +++ ...managing-team-access-to-an-organization-project-board.md | 3 +++ .../managing-team-access-to-an-organization-repository.md | 3 +++ .../managing-team-synchronization-for-your-organization.md | 3 +++ ...ult-branch-name-for-repositories-in-your-organization.md | 3 +++ ...ging-the-display-of-member-names-in-your-organization.md | 3 +++ .../managing-the-forking-policy-for-your-organization.md | 3 +++ ...blication-of-github-pages-sites-for-your-organization.md | 4 +++- ...ging-updates-from-accounts-your-organization-sponsors.md | 5 ++++- ...naging-your-organizations-ssh-certificate-authorities.md | 3 +++ ...ting-admin-teams-to-improved-organization-permissions.md | 3 +++ .../migrating-to-improved-organization-permissions.md | 3 +++ .../moving-a-team-in-your-organizations-hierarchy.md | 3 +++ .../organizing-members-into-teams.md | 3 +++ .../permission-levels-for-an-organization.md | 3 +++ .../pinning-a-team-discussion.md | 2 ++ ...g-to-enforce-saml-single-sign-on-in-your-organization.md | 3 +++ ...equire-two-factor-authentication-in-your-organization.md | 3 +++ .../project-board-permissions-for-an-organization.md | 3 +++ .../reinstating-a-former-member-of-your-organization.md | 5 ++++- ...mer-outside-collaborators-access-to-your-organization.md | 5 ++++- .../removing-a-billing-manager-from-your-organization.md | 4 ++++ .../removing-a-member-from-your-organization.md | 3 +++ ...tside-collaborator-from-an-organization-project-board.md | 3 +++ ...-outside-collaborator-from-an-organization-repository.md | 3 +++ .../removing-github-app-managers-from-your-organization.md | 3 +++ .../removing-organization-members-from-a-team.md | 3 +++ .../renaming-a-team.md | 3 +++ .../renaming-an-organization.md | 3 +++ .../repository-permission-levels-for-an-organization.md | 3 +++ .../requesting-to-add-a-child-team.md | 3 +++ .../requesting-to-add-or-change-a-parent-team.md | 3 +++ ...uiring-two-factor-authentication-in-your-organization.md | 3 +++ .../restricting-access-to-your-organizations-data.md | 3 +++ ...restricting-email-notifications-to-an-approved-domain.md | 3 +++ .../restricting-repository-creation-in-your-organization.md | 3 +++ ...ng-repository-visibility-changes-in-your-organization.md | 3 +++ .../reviewing-the-audit-log-for-your-organization.md | 3 +++ .../reviewing-your-organizations-installed-integrations.md | 3 +++ .../setting-base-permissions-for-an-organization.md | 3 +++ .../setting-permissions-for-adding-outside-collaborators.md | 3 +++ ...permissions-for-deleting-or-transferring-repositories.md | 3 +++ ...etting-team-creation-permissions-in-your-organization.md | 3 +++ .../setting-your-teams-profile-picture.md | 3 +++ .../synchronizing-a-team-with-an-identity-provider-group.md | 3 +++ .../transferring-organization-ownership.md | 3 +++ .../upgrading-to-the-corporate-terms-of-service.md | 3 +++ .../verifying-your-organizations-domain.md | 3 +++ ...d-managing-a-members-saml-access-to-your-organization.md | 3 +++ .../viewing-insights-for-your-organization.md | 3 +++ .../viewing-people-with-access-to-your-repository.md | 3 +++ ...g-whether-users-in-your-organization-have-2fa-enabled.md | 3 +++ .../about-enterprise-accounts.md | 2 ++ ...ity-and-access-management-for-your-enterprise-account.md | 4 +++- ...isioning-for-organizations-in-your-enterprise-account.md | 2 ++ .../adding-organizations-to-your-enterprise-account.md | 2 ++ ...ity-and-access-management-for-your-enterprise-account.md | 4 +++- ...gn-on-and-scim-for-your-enterprise-account-using-okta.md | 2 ++ ...actions-artifacts-and-logs-in-your-enterprise-account.md | 2 ++ ...ks-for-organization-events-in-your-enterprise-account.md | 2 ++ ...-sign-on-for-organizations-in-your-enterprise-account.md | 2 ++ ...icy-on-dependency-insights-in-your-enterprise-account.md | 2 ++ ...ng-github-actions-policies-in-your-enterprise-account.md | 2 ++ ...ing-project-board-policies-in-your-enterprise-account.md | 2 ++ ...sitory-management-policies-in-your-enterprise-account.md | 2 ++ ...nforcing-security-settings-in-your-enterprise-account.md | 2 ++ .../enforcing-team-policies-in-your-enterprise-account.md | 2 ++ .../github/setting-up-and-managing-your-enterprise/index.md | 2 ++ .../inviting-people-to-manage-your-enterprise.md | 2 ++ ...for-visual-studio-subscription-with-github-enterprise.md | 2 ++ .../managing-organizations-in-your-enterprise-account.md | 3 +++ ...nization-for-organizations-in-your-enterprise-account.md | 2 ++ ...ging-unowned-organizations-in-your-enterprise-account.md | 2 ++ .../managing-users-in-your-enterprise.md | 3 +++ .../managing-your-enterprise-account.md | 2 ++ ...tions-for-your-enterprise-account-to-approved-domains.md | 4 +++- .../roles-in-an-enterprise.md | 2 ++ ...policies-for-organizations-in-your-enterprise-account.md | 3 +++ .../verifying-your-enterprise-accounts-domain.md | 4 +++- ...g-and-managing-a-users-saml-access-to-your-enterprise.md | 2 ++ .../viewing-people-in-your-enterprise.md | 2 ++ ...dit-logs-for-organizations-in-your-enterprise-account.md | 2 ++ ...he-subscription-and-usage-for-your-enterprise-account.md | 4 +++- .../about-your-organizations-profile.md | 2 ++ .../about-your-profile.md | 2 ++ .../customizing-your-profile.md | 2 ++ .../setting-up-and-managing-your-github-profile/index.md | 2 ++ .../managing-contribution-graphs-on-your-profile.md | 2 ++ .../managing-your-profile-readme.md | 2 ++ .../personalizing-your-profile.md | 2 ++ .../pinning-items-to-your-profile.md | 4 +++- ...-or-hiding-your-private-contributions-on-your-profile.md | 2 ++ ...rprise-server-contributions-to-your-githubcom-profile.md | 2 ++ .../showing-an-overview-of-your-activity-on-your-profile.md | 2 ++ .../troubleshooting-commits-on-your-timeline.md | 2 ++ .../viewing-contributions-on-your-profile.md | 2 ++ ...why-are-my-contributions-not-showing-up-on-my-profile.md | 2 ++ .../about-organization-membership.md | 2 ++ .../about-your-personal-dashboard.md | 2 ++ .../accessing-an-organization.md | 2 ++ .../adding-an-email-address-to-your-github-account.md | 3 +++ .../best-practices-for-leaving-your-company.md | 2 ++ ...d-line-pushes-that-expose-your-personal-email-address.md | 3 +++ .../changing-your-github-username.md | 2 ++ .../changing-your-primary-email-address.md | 3 +++ .../converting-a-user-into-an-organization.md | 2 ++ .../deleting-your-user-account.md | 2 ++ .../index.md | 2 ++ .../inviting-collaborators-to-a-personal-repository.md | 3 +++ ...nership-continuity-of-your-user-accounts-repositories.md | 3 +++ .../managing-access-to-your-personal-repositories.md | 3 +++ .../managing-access-to-your-user-accounts-project-boards.md | 2 ++ .../managing-email-preferences.md | 3 +++ .../managing-marketing-emails-from-github.md | 3 +++ ...-security-and-analysis-settings-for-your-user-account.md | 2 ++ ...anaging-the-default-branch-name-for-your-repositories.md | 2 ++ .../managing-user-account-settings.md | 2 ++ .../managing-your-membership-in-organizations.md | 2 ++ .../managing-your-scheduled-reminders.md | 2 ++ .../managing-your-theme-settings.md | 4 +++- .../merging-multiple-user-accounts.md | 2 ++ .../permission-levels-for-a-user-account-repository.md | 2 ++ .../permission-levels-for-user-owned-project-boards.md | 2 ++ .../publicizing-or-hiding-organization-membership.md | 2 ++ .../remembering-your-github-username-or-email.md | 3 +++ .../removing-a-collaborator-from-a-personal-repository.md | 3 +++ .../removing-yourself-from-a-collaborators-repository.md | 3 +++ .../removing-yourself-from-an-organization.md | 2 ++ .../requesting-organization-approval-for-oauth-apps.md | 2 ++ .../setting-a-backup-email-address.md | 5 ++++- .../setting-your-commit-email-address.md | 3 +++ .../types-of-emails-github-sends.md | 3 +++ .../viewing-peoples-roles-in-an-organization.md | 2 ++ .../what-does-the-available-for-hire-checkbox-do.md | 2 ++ content/github/site-policy/dmca-takedown-policy.md | 3 +++ .../github/site-policy/github-acceptable-use-policies.md | 3 +++ .../github/site-policy/github-additional-product-terms.md | 3 +++ content/github/site-policy/github-and-trade-controls.md | 3 +++ content/github/site-policy/github-anti-bribery-statement.md | 3 +++ .../github-bug-bounty-program-legal-safe-harbor.md | 3 +++ .../github/site-policy/github-candidate-privacy-policy.md | 3 +++ .../site-policy/github-community-forum-code-of-conduct.md | 3 +++ content/github/site-policy/github-community-guidelines.md | 3 +++ .../github/site-policy/github-corporate-terms-of-service.md | 3 +++ content/github/site-policy/github-deceased-user-policy.md | 3 +++ content/github/site-policy/github-event-code-of-conduct.md | 3 +++ content/github/site-policy/github-event-terms.md | 3 +++ .../site-policy/github-gifts-and-entertainment-policy.md | 3 +++ .../github/site-policy/github-government-takedown-policy.md | 3 +++ .../github/site-policy/github-gpl-cooperation-commitment.md | 3 +++ ...ub-insights-and-data-protection-for-your-organization.md | 3 +++ content/github/site-policy/github-logo-policy.md | 3 +++ .../site-policy/github-marketplace-developer-agreement.md | 3 +++ .../site-policy/github-marketplace-terms-of-service.md | 3 +++ .../github-open-source-applications-terms-and-conditions.md | 3 +++ content/github/site-policy/github-pre-release-program.md | 3 +++ content/github/site-policy/github-privacy-statement.md | 3 +++ .../github-private-information-removal-policy.md | 3 +++ .../site-policy/github-registered-developer-agreement.md | 3 +++ content/github/site-policy/github-research-program-terms.md | 3 +++ .../github/site-policy/github-sponsors-additional-terms.md | 3 +++ ...thub-statement-against-modern-slavery-and-child-labor.md | 3 +++ .../github/site-policy/github-subprocessors-and-cookies.md | 3 +++ content/github/site-policy/github-terms-of-service.md | 3 +++ content/github/site-policy/github-trademark-policy.md | 3 +++ content/github/site-policy/github-username-policy.md | 3 +++ ...hubs-notice-about-the-california-consumer-privacy-act.md | 3 +++ content/github/site-policy/global-privacy-practices.md | 3 +++ .../guide-to-submitting-a-dmca-counter-notice.md | 3 +++ .../guide-to-submitting-a-dmca-takedown-notice.md | 3 +++ .../guidelines-for-legal-requests-of-user-data.md | 3 +++ content/github/site-policy/index.md | 3 +++ .../responsible-disclosure-of-security-vulnerabilities.md | 3 +++ .../site-policy/submitting-content-removal-requests.md | 3 +++ .../about-github-sponsors-for-open-source-contributors.md | 2 ++ .../about-github-sponsors.md | 2 ++ .../attributing-sponsorships-to-your-organization.md | 6 ++++-- .../changing-your-sponsorship-tiers.md | 4 +++- ...iguring-webhooks-for-events-in-your-sponsored-account.md | 4 +++- .../contacting-your-sponsors.md | 2 ++ .../editing-your-profile-details-for-github-sponsors.md | 4 +++- .../index.md | 2 ++ .../managing-your-payouts-from-github-sponsors.md | 4 +++- .../managing-your-sponsorship-goal.md | 2 ++ .../managing-your-sponsorship.md | 4 +++- .../overview.md | 2 ++ .../receiving-sponsorships-through-github-sponsors.md | 2 ++ .../setting-up-github-sponsors-for-your-organization.md | 2 ++ .../setting-up-github-sponsors-for-your-user-account.md | 2 ++ .../sponsoring-an-open-source-contributor.md | 2 ++ .../sponsoring-open-source-contributors.md | 2 ++ .../tax-information-for-github-sponsors.md | 2 ++ .../viewing-your-sponsors-and-sponsorships.md | 4 +++- .../about-githubs-use-of-your-data.md | 3 +++ ...anaging-data-use-settings-for-your-private-repository.md | 3 +++ ...the-github-archive-program-for-your-public-repository.md | 3 +++ .../requesting-an-archive-of-your-personal-accounts-data.md | 3 +++ .../about-repository-graphs.md | 2 ++ .../about-the-dependency-graph.md | 2 ++ .../accessing-basic-repository-data.md | 2 ++ .../analyzing-changes-to-a-repositorys-content.md | 2 ++ .../exploring-the-dependencies-of-a-repository.md | 2 ++ .../github/visualizing-repository-data-with-graphs/index.md | 2 ++ .../listing-the-forks-of-a-repository.md | 2 ++ .../understanding-connections-between-repositories.md | 2 ++ .../viewing-a-projects-contributors.md | 2 ++ .../viewing-a-repositorys-network.md | 2 ++ .../viewing-a-summary-of-repository-activity.md | 2 ++ .../viewing-traffic-to-a-repository.md | 2 ++ ...ng-additions-and-deletions-to-content-in-a-repository.md | 2 ++ .../visualizing-commits-in-a-repository.md | 2 ++ .../about-custom-domains-and-github-pages.md | 2 ++ .../about-github-pages-and-jekyll.md | 2 ++ .../github/working-with-github-pages/about-github-pages.md | 2 ++ .../about-jekyll-build-errors-for-github-pages-sites.md | 2 ++ ...adding-a-theme-to-your-github-pages-site-using-jekyll.md | 2 ++ ...heme-to-your-github-pages-site-with-the-theme-chooser.md | 2 ++ ...adding-content-to-your-github-pages-site-using-jekyll.md | 2 ++ ...onfiguring-a-custom-domain-for-your-github-pages-site.md | 2 ++ ...guring-a-publishing-source-for-your-github-pages-site.md | 2 ++ ...creating-a-custom-404-page-for-your-github-pages-site.md | 2 ++ .../creating-a-github-pages-site-with-jekyll.md | 2 ++ .../creating-a-github-pages-site.md | 2 ++ .../getting-started-with-github-pages.md | 2 ++ content/github/working-with-github-pages/index.md | 2 ++ .../managing-a-custom-domain-for-your-github-pages-site.md | 2 ++ .../securing-your-github-pages-site-with-https.md | 2 ++ ...own-processor-for-your-github-pages-site-using-jekyll.md | 2 ++ .../setting-up-a-github-pages-site-with-jekyll.md | 2 ++ .../testing-your-github-pages-site-locally-with-jekyll.md | 2 ++ .../troubleshooting-custom-domains-and-github-pages.md | 2 ++ ...leshooting-jekyll-build-errors-for-github-pages-sites.md | 2 ++ .../unpublishing-a-github-pages-site.md | 2 ++ .../using-submodules-with-github-pages.md | 2 ++ ...ut-github-premium-support-for-github-enterprise-cloud.md | 2 ++ .../working-with-github-support/about-github-support.md | 2 ++ .../github-enterprise-cloud-support.md | 2 ++ .../github-marketplace-support.md | 2 ++ content/github/working-with-github-support/index.md | 2 ++ .../working-with-github-support/submitting-a-ticket.md | 2 ++ content/graphql/guides/forming-calls-with-graphql.md | 2 ++ content/graphql/guides/index.md | 2 ++ content/graphql/guides/introduction-to-graphql.md | 2 ++ content/graphql/guides/managing-enterprise-accounts.md | 2 ++ content/graphql/guides/migrating-from-rest-to-graphql.md | 2 ++ content/graphql/guides/using-global-node-ids.md | 2 ++ content/graphql/guides/using-the-explorer.md | 2 ++ content/graphql/overview/about-the-graphql-api.md | 2 ++ content/graphql/overview/breaking-changes.md | 2 ++ content/graphql/overview/changelog.md | 2 ++ content/graphql/overview/explorer.md | 2 ++ content/graphql/overview/public-schema.md | 2 ++ content/graphql/overview/resource-limitations.md | 2 ++ content/graphql/overview/schema-previews.md | 2 ++ content/graphql/reference/enums.md | 2 ++ content/graphql/reference/input-objects.md | 2 ++ content/graphql/reference/interfaces.md | 2 ++ content/graphql/reference/mutations.md | 2 ++ content/graphql/reference/objects.md | 2 ++ content/graphql/reference/queries.md | 2 ++ content/graphql/reference/scalars.md | 2 ++ content/graphql/reference/unions.md | 2 ++ content/rest/guides/basics-of-authentication.md | 2 ++ content/rest/guides/best-practices-for-integrators.md | 2 ++ content/rest/guides/building-a-ci-server.md | 2 ++ content/rest/guides/delivering-deployments.md | 2 ++ content/rest/guides/discovering-resources-for-a-user.md | 2 ++ content/rest/guides/getting-started-with-the-checks-api.md | 2 ++ .../guides/getting-started-with-the-git-database-api.md | 2 ++ content/rest/guides/getting-started-with-the-rest-api.md | 2 ++ content/rest/guides/index.md | 2 ++ content/rest/guides/rendering-data-as-graphs.md | 2 ++ content/rest/guides/traversing-with-pagination.md | 2 ++ content/rest/guides/working-with-comments.md | 2 ++ content/rest/overview/api-previews.md | 2 ++ .../rest/overview/endpoints-available-for-github-apps.md | 2 ++ content/rest/overview/index.md | 2 ++ content/rest/overview/libraries.md | 2 ++ content/rest/overview/media-types.md | 2 ++ content/rest/overview/openapi-description.md | 4 +++- content/rest/overview/other-authentication-methods.md | 2 ++ content/rest/overview/resources-in-the-rest-api.md | 2 ++ content/rest/overview/troubleshooting.md | 2 ++ content/rest/reference/actions.md | 2 ++ content/rest/reference/activity.md | 2 ++ content/rest/reference/apps.md | 2 ++ content/rest/reference/billing.md | 2 ++ content/rest/reference/checks.md | 2 ++ content/rest/reference/code-scanning.md | 2 ++ content/rest/reference/codes-of-conduct.md | 2 ++ content/rest/reference/emojis.md | 2 ++ content/rest/reference/enterprise-admin.md | 2 ++ content/rest/reference/gists.md | 2 ++ content/rest/reference/git.md | 2 ++ content/rest/reference/gitignore.md | 2 ++ content/rest/reference/index.md | 2 ++ content/rest/reference/interactions.md | 2 ++ content/rest/reference/issues.md | 2 ++ content/rest/reference/licenses.md | 2 ++ content/rest/reference/markdown.md | 2 ++ content/rest/reference/meta.md | 2 ++ content/rest/reference/migrations.md | 2 ++ content/rest/reference/orgs.md | 2 ++ content/rest/reference/packages.md | 2 ++ .../rest/reference/permissions-required-for-github-apps.md | 2 ++ content/rest/reference/projects.md | 2 ++ content/rest/reference/pulls.md | 2 ++ content/rest/reference/rate-limit.md | 2 ++ content/rest/reference/reactions.md | 2 ++ content/rest/reference/repos.md | 2 ++ content/rest/reference/scim.md | 2 ++ content/rest/reference/search.md | 2 ++ content/rest/reference/teams.md | 2 ++ content/rest/reference/users.md | 2 ++ 1120 files changed, 2566 insertions(+), 73 deletions(-) diff --git a/content/actions/reference/usage-limits-billing-and-administration.md b/content/actions/reference/usage-limits-billing-and-administration.md index c59edbf101..2ab089a0ed 100644 --- a/content/actions/reference/usage-limits-billing-and-administration.md +++ b/content/actions/reference/usage-limits-billing-and-administration.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - billing --- {% data reusables.actions.enterprise-beta %} diff --git a/content/admin/authentication/allowing-built-in-authentication-for-users-outside-your-identity-provider.md b/content/admin/authentication/allowing-built-in-authentication-for-users-outside-your-identity-provider.md index c1ccb9a417..097850a133 100644 --- a/content/admin/authentication/allowing-built-in-authentication-for-users-outside-your-identity-provider.md +++ b/content/admin/authentication/allowing-built-in-authentication-for-users-outside-your-identity-provider.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/authentication/allowing-built-in-authentication-for-users-outside-your-identity-provider versions: enterprise-server: '*' +topics: + - enterprise --- ### About built-in authentication for users outside your identity provider diff --git a/content/admin/authentication/authenticating-users-for-your-github-enterprise-server-instance.md b/content/admin/authentication/authenticating-users-for-your-github-enterprise-server-instance.md index e21b5d8ae4..cc0d48b47c 100644 --- a/content/admin/authentication/authenticating-users-for-your-github-enterprise-server-instance.md +++ b/content/admin/authentication/authenticating-users-for-your-github-enterprise-server-instance.md @@ -11,5 +11,7 @@ redirect_from: mapTopic: true versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/authentication/changing-authentication-methods.md b/content/admin/authentication/changing-authentication-methods.md index b3f8f58c05..b9a864ebe2 100644 --- a/content/admin/authentication/changing-authentication-methods.md +++ b/content/admin/authentication/changing-authentication-methods.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/authentication/changing-authentication-methods versions: enterprise-server: '*' +topics: + - enterprise --- User accounts on {% data variables.product.product_location %} are preserved when you change the authentication method and users will continue to log into the same account as long as their username doesn't change. diff --git a/content/admin/authentication/disabling-unauthenticated-sign-ups.md b/content/admin/authentication/disabling-unauthenticated-sign-ups.md index 5987411ce0..cd9861decc 100644 --- a/content/admin/authentication/disabling-unauthenticated-sign-ups.md +++ b/content/admin/authentication/disabling-unauthenticated-sign-ups.md @@ -7,6 +7,8 @@ redirect_from: intro: 'If you''re using built-in authentication, you can block unauthenticated people from being able to create an account.' versions: enterprise-server: '*' +topics: + - enterprise --- {% data reusables.enterprise_site_admin_settings.access-settings %} diff --git a/content/admin/authentication/index.md b/content/admin/authentication/index.md index deacdaf76f..b55ee5094f 100644 --- a/content/admin/authentication/index.md +++ b/content/admin/authentication/index.md @@ -1,11 +1,13 @@ --- title: Authentication -intro: You can configure how users sign into {% data variables.product.product_name %}. +intro: 'You can configure how users sign into {% data variables.product.product_name %}.' redirect_from: - /enterprise/admin/authentication versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- diff --git a/content/admin/authentication/using-built-in-authentication.md b/content/admin/authentication/using-built-in-authentication.md index 4df510e488..0e05f30cd0 100644 --- a/content/admin/authentication/using-built-in-authentication.md +++ b/content/admin/authentication/using-built-in-authentication.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/authentication/using-built-in-authentication versions: enterprise-server: '*' +topics: + - enterprise --- You can create custom messages that users will see on the sign in and sign out pages. For more information, see "[Customizing user messages on your instance](/enterprise/admin/user-management/customizing-user-messages-on-your-instance)." diff --git a/content/admin/authentication/using-cas.md b/content/admin/authentication/using-cas.md index fa765d66b8..d5c2985090 100644 --- a/content/admin/authentication/using-cas.md +++ b/content/admin/authentication/using-cas.md @@ -8,6 +8,8 @@ redirect_from: intro: 'CAS is a single sign-on (SSO) protocol for multiple web applications. A CAS user account does not take up a {% if currentVersion ver_gt "enterprise-server@2.16" %}user license{% else %}seat{% endif %} until the user signs in.' versions: enterprise-server: '*' +topics: + - enterprise --- {% data reusables.enterprise_user_management.built-in-authentication %} diff --git a/content/admin/authentication/using-ldap.md b/content/admin/authentication/using-ldap.md index 959c6df2fb..53858a708b 100644 --- a/content/admin/authentication/using-ldap.md +++ b/content/admin/authentication/using-ldap.md @@ -11,6 +11,8 @@ redirect_from: intro: 'LDAP lets you authenticate {% data variables.product.prodname_ghe_server %} against your existing accounts and centrally manage repository access. LDAP is a popular application protocol for accessing and maintaining directory information services, and is one of the most common protocols used to integrate third-party software with large company user directories.' versions: enterprise-server: '*' +topics: + - enterprise --- {% data reusables.enterprise_user_management.built-in-authentication %} diff --git a/content/admin/authentication/using-saml.md b/content/admin/authentication/using-saml.md index e4cdd3808e..2da3fd18cc 100644 --- a/content/admin/authentication/using-saml.md +++ b/content/admin/authentication/using-saml.md @@ -8,6 +8,8 @@ redirect_from: intro: 'SAML is an XML-based standard for authentication and authorization. {% data variables.product.prodname_ghe_server %} can act as a service provider (SP) with your internal SAML identity provider (IdP).' versions: enterprise-server: '*' +topics: + - enterprise --- {% data reusables.enterprise_user_management.built-in-authentication %} diff --git a/content/admin/configuration/about-enterprise-configuration.md b/content/admin/configuration/about-enterprise-configuration.md index 8f90db0622..1436036526 100644 --- a/content/admin/configuration/about-enterprise-configuration.md +++ b/content/admin/configuration/about-enterprise-configuration.md @@ -4,6 +4,8 @@ intro: 'You can use the site admin dashboard{% if enterpriseServerVersions conta versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- {% if enterpriseServerVersions contains currentVersion %} diff --git a/content/admin/configuration/accessing-the-administrative-shell-ssh.md b/content/admin/configuration/accessing-the-administrative-shell-ssh.md index 73cf3530c7..939c25bd37 100644 --- a/content/admin/configuration/accessing-the-administrative-shell-ssh.md +++ b/content/admin/configuration/accessing-the-administrative-shell-ssh.md @@ -13,6 +13,8 @@ redirect_from: intro: '{% data reusables.enterprise_site_admin_settings.about-ssh-access %}' versions: enterprise-server: '*' +topics: + - enterprise --- ### About administrative shell access diff --git a/content/admin/configuration/accessing-the-management-console.md b/content/admin/configuration/accessing-the-management-console.md index 94a312d877..62921a128c 100644 --- a/content/admin/configuration/accessing-the-management-console.md +++ b/content/admin/configuration/accessing-the-management-console.md @@ -12,6 +12,8 @@ redirect_from: - /enterprise/admin/configuration/accessing-the-management-console versions: enterprise-server: '*' +topics: + - enterprise --- ### About the {% data variables.enterprise.management_console %} diff --git a/content/admin/configuration/command-line-utilities.md b/content/admin/configuration/command-line-utilities.md index d10388e2f9..6abacadb3c 100644 --- a/content/admin/configuration/command-line-utilities.md +++ b/content/admin/configuration/command-line-utilities.md @@ -9,6 +9,8 @@ redirect_from: miniTocMaxHeadingLevel: 4 versions: enterprise-server: '*' +topics: + - enterprise --- You can execute these commands from anywhere on the VM after signing in as an SSH admin user. For more information, see "[Accessing the administrative shell (SSH)](/enterprise/{{ currentVersion }}/admin/guides/installation/accessing-the-administrative-shell-ssh/)." diff --git a/content/admin/configuration/configuring-a-hostname.md b/content/admin/configuration/configuring-a-hostname.md index 3e7bd4b662..981e4abd9f 100644 --- a/content/admin/configuration/configuring-a-hostname.md +++ b/content/admin/configuration/configuring-a-hostname.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/configuration/configuring-a-hostname versions: enterprise-server: '*' +topics: + - enterprise --- If you configure a hostname instead of a hard-coded IP address, you will be able to change the physical hardware that {% data variables.product.product_location %} runs on without affecting users or client software. diff --git a/content/admin/configuration/configuring-advanced-security-features.md b/content/admin/configuration/configuring-advanced-security-features.md index e9a8a1113f..353c1e4246 100644 --- a/content/admin/configuration/configuring-advanced-security-features.md +++ b/content/admin/configuration/configuring-advanced-security-features.md @@ -7,5 +7,7 @@ redirect_from: - /enterprise/admin/configuration/configuring-advanced-security-features versions: enterprise-server: '>=2.22' +topics: + - enterprise --- diff --git a/content/admin/configuration/configuring-an-outbound-web-proxy-server.md b/content/admin/configuration/configuring-an-outbound-web-proxy-server.md index 8a398553fa..b58ca8f400 100644 --- a/content/admin/configuration/configuring-an-outbound-web-proxy-server.md +++ b/content/admin/configuration/configuring-an-outbound-web-proxy-server.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/configuration/configuring-an-outbound-web-proxy-server versions: enterprise-server: '*' +topics: + - enterprise --- When a proxy server is enabled for {% data variables.product.product_location %}, outbound messages sent by {% data variables.product.prodname_ghe_server %} are first sent through the proxy server, unless the destination host is added as an HTTP proxy exclusion. Types of outbound messages include outgoing webhooks, uploading bundles, and fetching legacy avatars. The proxy server's URL is the protocol, domain or IP address, plus the port number, for example `http://127.0.0.1:8123`. diff --git a/content/admin/configuration/configuring-applications.md b/content/admin/configuration/configuring-applications.md index 534c4c76d9..da0908fc88 100644 --- a/content/admin/configuration/configuring-applications.md +++ b/content/admin/configuration/configuring-applications.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/configuration/configuring-applications versions: enterprise-server: '*' +topics: + - enterprise --- ### Adjusting image caching diff --git a/content/admin/configuration/configuring-backups-on-your-appliance.md b/content/admin/configuration/configuring-backups-on-your-appliance.md index dbea15fc26..62754fac24 100644 --- a/content/admin/configuration/configuring-backups-on-your-appliance.md +++ b/content/admin/configuration/configuring-backups-on-your-appliance.md @@ -15,6 +15,8 @@ redirect_from: intro: 'As part of a disaster recovery plan, you can protect production data on {% data variables.product.product_location %} by configuring automated backups.' versions: enterprise-server: '*' +topics: + - enterprise --- ### About {% data variables.product.prodname_enterprise_backup_utilities %} diff --git a/content/admin/configuration/configuring-built-in-firewall-rules.md b/content/admin/configuration/configuring-built-in-firewall-rules.md index 1ee5bcda80..73415a9df1 100644 --- a/content/admin/configuration/configuring-built-in-firewall-rules.md +++ b/content/admin/configuration/configuring-built-in-firewall-rules.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/configuration/configuring-built-in-firewall-rules versions: enterprise-server: '*' +topics: + - enterprise --- ### About {% data variables.product.product_location %}'s firewall diff --git a/content/admin/configuration/configuring-code-scanning-for-your-appliance.md b/content/admin/configuration/configuring-code-scanning-for-your-appliance.md index 7b579bfe1d..152e36452e 100644 --- a/content/admin/configuration/configuring-code-scanning-for-your-appliance.md +++ b/content/admin/configuration/configuring-code-scanning-for-your-appliance.md @@ -8,6 +8,8 @@ redirect_from: - /enterprise/admin/configuration/configuring-code-scanning-for-your-appliance versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% data reusables.code-scanning.beta %} diff --git a/content/admin/configuration/configuring-dns-nameservers.md b/content/admin/configuration/configuring-dns-nameservers.md index 5e3dd8edbf..89d69a723c 100644 --- a/content/admin/configuration/configuring-dns-nameservers.md +++ b/content/admin/configuration/configuring-dns-nameservers.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/configuration/configuring-dns-nameservers versions: enterprise-server: '*' +topics: + - enterprise --- The nameservers you specify must resolve {% data variables.product.product_location %}'s hostname. diff --git a/content/admin/configuration/configuring-email-for-notifications.md b/content/admin/configuration/configuring-email-for-notifications.md index 665d0177ca..25ae0e9c52 100644 --- a/content/admin/configuration/configuring-email-for-notifications.md +++ b/content/admin/configuration/configuring-email-for-notifications.md @@ -1,6 +1,6 @@ --- title: Configuring email for notifications -intro: To make it easy for users to respond quickly to activity on {% data variables.product.product_name %}, you can configure {% data variables.product.product_location %} to send email notifications for issue, pull request, and commit comments. +intro: 'To make it easy for users to respond quickly to activity on {% data variables.product.product_name %}, you can configure {% data variables.product.product_location %} to send email notifications for issue, pull request, and commit comments.' redirect_from: - /enterprise/admin/guides/installation/email-configuration/ - /enterprise/admin/articles/configuring-email/ @@ -10,6 +10,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- {% if currentVersion == "github-ae@latest" %} diff --git a/content/admin/configuration/configuring-github-pages-for-your-enterprise.md b/content/admin/configuration/configuring-github-pages-for-your-enterprise.md index 29a92ff609..3a27d659cc 100644 --- a/content/admin/configuration/configuring-github-pages-for-your-enterprise.md +++ b/content/admin/configuration/configuring-github-pages-for-your-enterprise.md @@ -11,6 +11,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### Enabling public sites for {% data variables.product.prodname_pages %} diff --git a/content/admin/configuration/configuring-network-settings.md b/content/admin/configuration/configuring-network-settings.md index b5d7abf7e0..fe94a7b2b0 100644 --- a/content/admin/configuration/configuring-network-settings.md +++ b/content/admin/configuration/configuring-network-settings.md @@ -11,5 +11,7 @@ intro: 'Configure {% data variables.product.prodname_ghe_server %} with the DNS mapTopic: true versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/configuration/configuring-rate-limits.md b/content/admin/configuration/configuring-rate-limits.md index 5cffccdf16..46f56ef79e 100644 --- a/content/admin/configuration/configuring-rate-limits.md +++ b/content/admin/configuration/configuring-rate-limits.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/configuration/configuring-rate-limits versions: enterprise-server: '*' +topics: + - enterprise --- ### Enabling rate limits for {% data variables.product.prodname_enterprise_api %} diff --git a/content/admin/configuration/configuring-secret-scanning-for-your-appliance.md b/content/admin/configuration/configuring-secret-scanning-for-your-appliance.md index b806b45f29..361702b4b3 100644 --- a/content/admin/configuration/configuring-secret-scanning-for-your-appliance.md +++ b/content/admin/configuration/configuring-secret-scanning-for-your-appliance.md @@ -6,6 +6,8 @@ product: '{% data reusables.gated-features.secret-scanning %}' miniTocMaxHeadingLevel: 4 versions: enterprise-server: '>=3.0' +topics: + - enterprise --- {% data reusables.secret-scanning.beta %} diff --git a/content/admin/configuration/configuring-the-ip-address-using-the-virtual-machine-console.md b/content/admin/configuration/configuring-the-ip-address-using-the-virtual-machine-console.md index c8b25b42dc..f814b48cf9 100644 --- a/content/admin/configuration/configuring-the-ip-address-using-the-virtual-machine-console.md +++ b/content/admin/configuration/configuring-the-ip-address-using-the-virtual-machine-console.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/configuration/configuring-the-ip-address-using-the-virtual-machine-console versions: enterprise-server: '*' +topics: + - enterprise --- {% note %} diff --git a/content/admin/configuration/configuring-time-synchronization.md b/content/admin/configuration/configuring-time-synchronization.md index d9042f873d..a71272ab86 100644 --- a/content/admin/configuration/configuring-time-synchronization.md +++ b/content/admin/configuration/configuring-time-synchronization.md @@ -10,6 +10,8 @@ redirect_from: - /enterprise/admin/configuration/configuring-time-synchronization versions: enterprise-server: '*' +topics: + - enterprise --- ### Changing the default NTP servers diff --git a/content/admin/configuration/configuring-tls.md b/content/admin/configuration/configuring-tls.md index fd106938d1..4b9d1bb375 100644 --- a/content/admin/configuration/configuring-tls.md +++ b/content/admin/configuration/configuring-tls.md @@ -8,6 +8,8 @@ redirect_from: - /enterprise/admin/configuration/configuring-tls versions: enterprise-server: '*' +topics: + - enterprise --- ### About Transport Layer Security diff --git a/content/admin/configuration/configuring-your-enterprise.md b/content/admin/configuration/configuring-your-enterprise.md index 5afbbe1751..641f5e6109 100644 --- a/content/admin/configuration/configuring-your-enterprise.md +++ b/content/admin/configuration/configuring-your-enterprise.md @@ -1,6 +1,6 @@ --- title: Configuring your enterprise -intro: "After {% data variables.product.product_name %} is up and running, you can configure your enterprise to suit your organization's needs." +intro: 'After {% data variables.product.product_name %} is up and running, you can configure your enterprise to suit your organization''s needs.' redirect_from: - /enterprise/admin/guides/installation/basic-configuration/ - /enterprise/admin/guides/installation/administrative-tools/ @@ -12,5 +12,7 @@ mapTopic: true versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- diff --git a/content/admin/configuration/connecting-github-enterprise-server-to-github-enterprise-cloud.md b/content/admin/configuration/connecting-github-enterprise-server-to-github-enterprise-cloud.md index f3e412341c..30be76ad51 100644 --- a/content/admin/configuration/connecting-github-enterprise-server-to-github-enterprise-cloud.md +++ b/content/admin/configuration/connecting-github-enterprise-server-to-github-enterprise-cloud.md @@ -10,6 +10,8 @@ redirect_from: permissions: 'Site administrators for {% data variables.product.prodname_ghe_server %} who are also owners of a {% data variables.product.prodname_ghe_cloud %} organization or enterprise account can enable {% data variables.product.prodname_github_connect %}.' versions: enterprise-server: '*' +topics: + - enterprise --- ### About {% data variables.product.prodname_github_connect %} diff --git a/content/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server.md b/content/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server.md index 8d25c497ef..3311ca6605 100644 --- a/content/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server.md +++ b/content/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server.md @@ -8,6 +8,8 @@ redirect_from: permissions: 'Site administrators for {% data variables.product.prodname_ghe_server %} who are also owners of the connected {% data variables.product.prodname_ghe_cloud %} organization or enterprise account can enable {% if currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %}{% else %}security{% endif %} alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}.' versions: enterprise-server: '*' +topics: + - enterprise --- ### About alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %} diff --git a/content/admin/configuration/enabling-and-scheduling-maintenance-mode.md b/content/admin/configuration/enabling-and-scheduling-maintenance-mode.md index 832241da5f..52dfaa160b 100644 --- a/content/admin/configuration/enabling-and-scheduling-maintenance-mode.md +++ b/content/admin/configuration/enabling-and-scheduling-maintenance-mode.md @@ -12,6 +12,8 @@ redirect_from: - /enterprise/admin/configuration/enabling-and-scheduling-maintenance-mode versions: enterprise-server: '*' +topics: + - enterprise --- ### About maintenance mode diff --git a/content/admin/configuration/enabling-automatic-user-license-sync-between-github-enterprise-server-and-github-enterprise-cloud.md b/content/admin/configuration/enabling-automatic-user-license-sync-between-github-enterprise-server-and-github-enterprise-cloud.md index a320a62917..3c161a3171 100644 --- a/content/admin/configuration/enabling-automatic-user-license-sync-between-github-enterprise-server-and-github-enterprise-cloud.md +++ b/content/admin/configuration/enabling-automatic-user-license-sync-between-github-enterprise-server-and-github-enterprise-cloud.md @@ -7,6 +7,8 @@ redirect_from: permissions: 'Site administrators for {% data variables.product.prodname_ghe_server %} who are also owners of the connected {% data variables.product.prodname_ghe_cloud %} organization or enterprise account can enable automatic user license synchronization.' versions: enterprise-server: '*' +topics: + - enterprise --- ### About license synchronization diff --git a/content/admin/configuration/enabling-private-mode.md b/content/admin/configuration/enabling-private-mode.md index 831e440b7f..1e32ab673f 100644 --- a/content/admin/configuration/enabling-private-mode.md +++ b/content/admin/configuration/enabling-private-mode.md @@ -9,6 +9,8 @@ redirect_from: - /enterprise/admin/configuration/enabling-private-mode versions: enterprise-server: '*' +topics: + - enterprise --- You must enable private mode if {% data variables.product.product_location %} is publicly accessible over the Internet. In private mode, users cannot anonymously clone repositories over `git://`. If built-in authentication is also enabled, an administrator must invite new users to create an account on the instance. For more information, see "[Using built-in authentication](/enterprise/{{ currentVersion }}/admin/guides/user-management/using-built-in-authentication)." diff --git a/content/admin/configuration/enabling-subdomain-isolation.md b/content/admin/configuration/enabling-subdomain-isolation.md index 76012af69f..782d4033e7 100644 --- a/content/admin/configuration/enabling-subdomain-isolation.md +++ b/content/admin/configuration/enabling-subdomain-isolation.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/configuration/enabling-subdomain-isolation versions: enterprise-server: '*' +topics: + - enterprise --- ### About subdomain isolation diff --git a/content/admin/configuration/enabling-unified-contributions-between-github-enterprise-server-and-githubcom.md b/content/admin/configuration/enabling-unified-contributions-between-github-enterprise-server-and-githubcom.md index 7c85654bea..2d609c74fb 100644 --- a/content/admin/configuration/enabling-unified-contributions-between-github-enterprise-server-and-githubcom.md +++ b/content/admin/configuration/enabling-unified-contributions-between-github-enterprise-server-and-githubcom.md @@ -10,6 +10,8 @@ redirect_from: permissions: 'Site administrators for {% data variables.product.prodname_ghe_server %} who are also owners of the connected {% data variables.product.prodname_ghe_cloud %} organization or enterprise account can enable unified contributions between {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_dotcom_the_website %}.' versions: enterprise-server: '*' +topics: + - enterprise --- As a site administrator, you can allow end users to send anonymized contribution counts for their work from {% data variables.product.prodname_ghe_server %} to their {% data variables.product.prodname_dotcom_the_website %} contribution graph. diff --git a/content/admin/configuration/enabling-unified-search-between-github-enterprise-server-and-githubcom.md b/content/admin/configuration/enabling-unified-search-between-github-enterprise-server-and-githubcom.md index 33130ca6fe..d34e2ebdba 100644 --- a/content/admin/configuration/enabling-unified-search-between-github-enterprise-server-and-githubcom.md +++ b/content/admin/configuration/enabling-unified-search-between-github-enterprise-server-and-githubcom.md @@ -10,6 +10,8 @@ redirect_from: permissions: 'Site administrators for {% data variables.product.prodname_ghe_server %} who are also owners of the connected {% data variables.product.prodname_ghe_cloud %} organization or enterprise account can enable unified search between {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_dotcom_the_website %}.' versions: enterprise-server: '*' +topics: + - enterprise --- When you enable unified search, users can view search results from public and private content on {% data variables.product.prodname_dotcom_the_website %} when searching from {% data variables.product.product_location_enterprise %}. diff --git a/content/admin/configuration/index.md b/content/admin/configuration/index.md index ee042551f2..1cfa0079a8 100644 --- a/content/admin/configuration/index.md +++ b/content/admin/configuration/index.md @@ -1,12 +1,14 @@ --- title: Configuring GitHub Enterprise shortTitle: Configuring GitHub Enterprise -intro: "You can configure your enterprise to suit your organization's needs." +intro: You can configure your enterprise to suit your organization's needs. redirect_from: - /enterprise/admin/configuration versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- {% if currentVersion ver_gt "enterprise-server@2.21" %} diff --git a/content/admin/configuration/managing-connections-between-github-enterprise-server-and-github-enterprise-cloud.md b/content/admin/configuration/managing-connections-between-github-enterprise-server-and-github-enterprise-cloud.md index 63e4e25bee..1fd17e838e 100644 --- a/content/admin/configuration/managing-connections-between-github-enterprise-server-and-github-enterprise-cloud.md +++ b/content/admin/configuration/managing-connections-between-github-enterprise-server-and-github-enterprise-cloud.md @@ -11,5 +11,7 @@ redirect_from: - /enterprise/admin/configuration/managing-connections-between-github-enterprise-server-and-github-enterprise-cloud versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/configuration/managing-github-for-mobile-for-your-enterprise.md b/content/admin/configuration/managing-github-for-mobile-for-your-enterprise.md index 66de92b8f4..fb7b3fe2dc 100644 --- a/content/admin/configuration/managing-github-for-mobile-for-your-enterprise.md +++ b/content/admin/configuration/managing-github-for-mobile-for-your-enterprise.md @@ -1,9 +1,11 @@ --- title: Managing GitHub for mobile for your enterprise -intro: You can decide whether authenticated users can connect to {% data variables.product.product_location %} with {% data variables.product.prodname_mobile %}. -permissions: Enterprise owners can manage {% data variables.product.prodname_mobile %} for an enterprise on {% data variables.product.product_name %}. +intro: 'You can decide whether authenticated users can connect to {% data variables.product.product_location %} with {% data variables.product.prodname_mobile %}.' +permissions: 'Enterprise owners can manage {% data variables.product.prodname_mobile %} for an enterprise on {% data variables.product.product_name %}.' versions: enterprise-server: '>=3.0' +topics: + - enterprise --- {% if enterpriseServerVersions contains currentVersion %} diff --git a/content/admin/configuration/network-ports.md b/content/admin/configuration/network-ports.md index 9a4688b5f2..22f578d8d3 100644 --- a/content/admin/configuration/network-ports.md +++ b/content/admin/configuration/network-ports.md @@ -10,6 +10,8 @@ redirect_from: intro: 'Open network ports selectively based on the network services you need to expose for administrators, end users, and email support.' versions: enterprise-server: '*' +topics: + - enterprise --- ### Administrative ports diff --git a/content/admin/configuration/site-admin-dashboard.md b/content/admin/configuration/site-admin-dashboard.md index da953a8cd3..df0c325292 100644 --- a/content/admin/configuration/site-admin-dashboard.md +++ b/content/admin/configuration/site-admin-dashboard.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/configuration/site-admin-dashboard versions: enterprise-server: '*' +topics: + - enterprise --- To access the dashboard, in the upper-right corner of any page, click {% octicon "rocket" aria-label="The rocket ship" %}. diff --git a/content/admin/configuration/troubleshooting-ssl-errors.md b/content/admin/configuration/troubleshooting-ssl-errors.md index 61c4bb3ce9..8271cc47b2 100644 --- a/content/admin/configuration/troubleshooting-ssl-errors.md +++ b/content/admin/configuration/troubleshooting-ssl-errors.md @@ -8,6 +8,8 @@ redirect_from: - /enterprise/admin/configuration/troubleshooting-ssl-errors versions: enterprise-server: '*' +topics: + - enterprise --- ### Removing the passphrase from your key file diff --git a/content/admin/configuration/using-github-enterprise-server-with-a-load-balancer.md b/content/admin/configuration/using-github-enterprise-server-with-a-load-balancer.md index 539b679d73..869cc35ff0 100644 --- a/content/admin/configuration/using-github-enterprise-server-with-a-load-balancer.md +++ b/content/admin/configuration/using-github-enterprise-server-with-a-load-balancer.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/configuration/using-github-enterprise-server-with-a-load-balancer versions: enterprise-server: '*' +topics: + - enterprise --- {% data reusables.enterprise_clustering.load_balancer_intro %} diff --git a/content/admin/configuration/validating-your-domain-settings.md b/content/admin/configuration/validating-your-domain-settings.md index 1c731a310c..581679b205 100644 --- a/content/admin/configuration/validating-your-domain-settings.md +++ b/content/admin/configuration/validating-your-domain-settings.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/configuration/validating-your-domain-settings versions: enterprise-server: '*' +topics: + - enterprise --- {% data reusables.enterprise_site_admin_settings.access-settings %} {% data reusables.enterprise_site_admin_settings.management-console %} diff --git a/content/admin/enterprise-management/about-cluster-nodes.md b/content/admin/enterprise-management/about-cluster-nodes.md index 74a1a75fe3..463b8781a0 100644 --- a/content/admin/enterprise-management/about-cluster-nodes.md +++ b/content/admin/enterprise-management/about-cluster-nodes.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/about-cluster-nodes versions: enterprise-server: '*' +topics: + - enterprise --- {% data reusables.enterprise_clustering.clustering-requires-https %} diff --git a/content/admin/enterprise-management/about-clustering.md b/content/admin/enterprise-management/about-clustering.md index 8b3345da85..1a1157bb0d 100644 --- a/content/admin/enterprise-management/about-clustering.md +++ b/content/admin/enterprise-management/about-clustering.md @@ -8,6 +8,8 @@ redirect_from: - /enterprise/admin/enterprise-management/about-clustering versions: enterprise-server: '*' +topics: + - enterprise --- ### Clustering architecture diff --git a/content/admin/enterprise-management/about-geo-replication.md b/content/admin/enterprise-management/about-geo-replication.md index dfa868e556..b72945375b 100644 --- a/content/admin/enterprise-management/about-geo-replication.md +++ b/content/admin/enterprise-management/about-geo-replication.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/about-geo-replication versions: enterprise-server: '*' +topics: + - enterprise --- Multiple active replicas can provide a shorter distance to the nearest replica. For example, an organization with offices in San Francisco, New York, and London could run the primary appliance in a datacenter near New York and two replicas in datacenters near San Francisco and London. Using geolocation-aware DNS, users can be directed to the closest server available and access repository data faster. Designating the appliance near New York as the primary helps reduce the latency between the hosts, compared to the appliance near San Francisco being the primary which has a higher latency to London. diff --git a/content/admin/enterprise-management/about-high-availability-configuration.md b/content/admin/enterprise-management/about-high-availability-configuration.md index 724be83b78..19b5449371 100644 --- a/content/admin/enterprise-management/about-high-availability-configuration.md +++ b/content/admin/enterprise-management/about-high-availability-configuration.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/about-high-availability-configuration versions: enterprise-server: '*' +topics: + - enterprise --- When you configure high availability, there is an automated setup of one-way, asynchronous replication of all datastores (Git repositories, MySQL, Redis, and Elasticsearch) from the primary to the replica appliance. diff --git a/content/admin/enterprise-management/accessing-the-monitor-dashboard.md b/content/admin/enterprise-management/accessing-the-monitor-dashboard.md index a83ec1d359..b7182b0edf 100644 --- a/content/admin/enterprise-management/accessing-the-monitor-dashboard.md +++ b/content/admin/enterprise-management/accessing-the-monitor-dashboard.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/accessing-the-monitor-dashboard versions: enterprise-server: '*' +topics: + - enterprise --- ### Accessing the monitor dashboard diff --git a/content/admin/enterprise-management/cluster-network-configuration.md b/content/admin/enterprise-management/cluster-network-configuration.md index b11cc7bb1f..80f91507d7 100644 --- a/content/admin/enterprise-management/cluster-network-configuration.md +++ b/content/admin/enterprise-management/cluster-network-configuration.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/cluster-network-configuration versions: enterprise-server: '*' +topics: + - enterprise --- ### Network considerations diff --git a/content/admin/enterprise-management/configuring-clustering.md b/content/admin/enterprise-management/configuring-clustering.md index 6fc9f34af1..6752ddf050 100644 --- a/content/admin/enterprise-management/configuring-clustering.md +++ b/content/admin/enterprise-management/configuring-clustering.md @@ -9,5 +9,7 @@ redirect_from: mapTopic: true versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/enterprise-management/configuring-collectd.md b/content/admin/enterprise-management/configuring-collectd.md index 4196beb841..7ce2e846c8 100644 --- a/content/admin/enterprise-management/configuring-collectd.md +++ b/content/admin/enterprise-management/configuring-collectd.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/enterprise-management/configuring-collectd versions: enterprise-server: '*' +topics: + - enterprise --- ### Set up an external `collectd` server diff --git a/content/admin/enterprise-management/configuring-high-availability-replication-for-a-cluster.md b/content/admin/enterprise-management/configuring-high-availability-replication-for-a-cluster.md index 9cf229f154..deb7ebbf60 100644 --- a/content/admin/enterprise-management/configuring-high-availability-replication-for-a-cluster.md +++ b/content/admin/enterprise-management/configuring-high-availability-replication-for-a-cluster.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/configuring-high-availability-replication-for-a-cluster versions: enterprise-server: '>2.21' +topics: + - enterprise --- ### About high availability replication for clusters diff --git a/content/admin/enterprise-management/configuring-high-availability.md b/content/admin/enterprise-management/configuring-high-availability.md index 84b7b0ae9f..bd994c7848 100644 --- a/content/admin/enterprise-management/configuring-high-availability.md +++ b/content/admin/enterprise-management/configuring-high-availability.md @@ -10,5 +10,7 @@ intro: '{% data variables.product.prodname_ghe_server %} supports a high availab mapTopic: true versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/enterprise-management/creating-a-high-availability-replica.md b/content/admin/enterprise-management/creating-a-high-availability-replica.md index 9c124a1eb8..8a032953fb 100644 --- a/content/admin/enterprise-management/creating-a-high-availability-replica.md +++ b/content/admin/enterprise-management/creating-a-high-availability-replica.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/creating-a-high-availability-replica versions: enterprise-server: '*' +topics: + - enterprise --- ### Creating a high availability replica diff --git a/content/admin/enterprise-management/differences-between-clustering-and-high-availability-ha.md b/content/admin/enterprise-management/differences-between-clustering-and-high-availability-ha.md index 9ac3ba2f73..59d4847dd9 100644 --- a/content/admin/enterprise-management/differences-between-clustering-and-high-availability-ha.md +++ b/content/admin/enterprise-management/differences-between-clustering-and-high-availability-ha.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/differences-between-clustering-and-high-availability-ha versions: enterprise-server: '*' +topics: + - enterprise --- ### Failure scenarios diff --git a/content/admin/enterprise-management/enabling-automatic-update-checks.md b/content/admin/enterprise-management/enabling-automatic-update-checks.md index 07f741e1bc..3c53bfa0a5 100644 --- a/content/admin/enterprise-management/enabling-automatic-update-checks.md +++ b/content/admin/enterprise-management/enabling-automatic-update-checks.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/enabling-automatic-update-checks versions: enterprise-server: '*' +topics: + - enterprise --- When an upgrade package is automatically downloaded for {% data variables.product.product_location %}, you'll receive a message letting you know you can upgrade {% data variables.product.prodname_ghe_server %}. Packages download to the `/var/lib/ghe-updates` directory on {% data variables.product.product_location %}. For more information, see "[Upgrading {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/guides/installation/upgrading-github-enterprise-server)." diff --git a/content/admin/enterprise-management/evacuating-a-cluster-node.md b/content/admin/enterprise-management/evacuating-a-cluster-node.md index c429e92707..a93e152668 100644 --- a/content/admin/enterprise-management/evacuating-a-cluster-node.md +++ b/content/admin/enterprise-management/evacuating-a-cluster-node.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/evacuating-a-cluster-node versions: enterprise-server: '*' +topics: + - enterprise --- If you only have three nodes in your data services cluster, you can't evacuate the nodes, because `ghe-spokes` doesn’t have another place to make a copy. If you have four or more, `ghe-spokes` will move all the repositories off of the evacuated node. diff --git a/content/admin/enterprise-management/increasing-cpu-or-memory-resources.md b/content/admin/enterprise-management/increasing-cpu-or-memory-resources.md index 70ad38778a..ce3e4a1acd 100644 --- a/content/admin/enterprise-management/increasing-cpu-or-memory-resources.md +++ b/content/admin/enterprise-management/increasing-cpu-or-memory-resources.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/increasing-cpu-or-memory-resources versions: enterprise-server: '*' +topics: + - enterprise --- {% data reusables.enterprise_installation.warning-on-upgrading-physical-resources %} diff --git a/content/admin/enterprise-management/increasing-storage-capacity.md b/content/admin/enterprise-management/increasing-storage-capacity.md index 2c893b226e..1db8208731 100644 --- a/content/admin/enterprise-management/increasing-storage-capacity.md +++ b/content/admin/enterprise-management/increasing-storage-capacity.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/increasing-storage-capacity versions: enterprise-server: '*' +topics: + - enterprise --- {% data reusables.enterprise_installation.warning-on-upgrading-physical-resources %} diff --git a/content/admin/enterprise-management/index.md b/content/admin/enterprise-management/index.md index faaf069973..cc6f503d0a 100644 --- a/content/admin/enterprise-management/index.md +++ b/content/admin/enterprise-management/index.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/enterprise-management versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/enterprise-management/initializing-the-cluster.md b/content/admin/enterprise-management/initializing-the-cluster.md index 1fc88c484a..4ada134284 100644 --- a/content/admin/enterprise-management/initializing-the-cluster.md +++ b/content/admin/enterprise-management/initializing-the-cluster.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/initializing-the-cluster versions: enterprise-server: '*' +topics: + - enterprise --- {% data reusables.enterprise_clustering.clustering-requires-https %} diff --git a/content/admin/enterprise-management/initiating-a-failover-to-your-replica-appliance.md b/content/admin/enterprise-management/initiating-a-failover-to-your-replica-appliance.md index 208fe0e10d..7a9d0c47f5 100644 --- a/content/admin/enterprise-management/initiating-a-failover-to-your-replica-appliance.md +++ b/content/admin/enterprise-management/initiating-a-failover-to-your-replica-appliance.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/initiating-a-failover-to-your-replica-appliance versions: enterprise-server: '*' +topics: + - enterprise --- The time required to failover depends on how long it takes to manually promote the replica and redirect traffic. The average time ranges between 2-10 minutes. diff --git a/content/admin/enterprise-management/initiating-a-failover-to-your-replica-cluster.md b/content/admin/enterprise-management/initiating-a-failover-to-your-replica-cluster.md index 2b0406038c..baa4b482d3 100644 --- a/content/admin/enterprise-management/initiating-a-failover-to-your-replica-cluster.md +++ b/content/admin/enterprise-management/initiating-a-failover-to-your-replica-cluster.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/enterprise-management/initiating-a-failover-to-your-replica-cluster versions: enterprise-server: '>2.21' +topics: + - enterprise --- ### About failover to your replica cluster diff --git a/content/admin/enterprise-management/migrating-from-github-enterprise-1110x-to-2123.md b/content/admin/enterprise-management/migrating-from-github-enterprise-1110x-to-2123.md index 5369335124..f28668eb3a 100644 --- a/content/admin/enterprise-management/migrating-from-github-enterprise-1110x-to-2123.md +++ b/content/admin/enterprise-management/migrating-from-github-enterprise-1110x-to-2123.md @@ -12,6 +12,8 @@ redirect_from: intro: 'To migrate from {% data variables.product.prodname_enterprise %} 11.10.x to 2.1.23, you''ll need to set up a new appliance instance and migrate data from the previous instance.' versions: enterprise-server: '*' +topics: + - enterprise --- Migrations from {% data variables.product.prodname_enterprise %} 11.10.348 and later are supported. Migrating from {% data variables.product.prodname_enterprise %} 11.10.348 and earlier is not supported. You must first upgrade to 11.10.348 in several upgrades. For more information, see the 11.10.348 upgrading procedure, "[Upgrading to the latest release](/enterprise/11.10.340/admin/articles/upgrading-to-the-latest-release/)." diff --git a/content/admin/enterprise-management/monitoring-cluster-nodes.md b/content/admin/enterprise-management/monitoring-cluster-nodes.md index da5fcdd1c9..4916df38ad 100644 --- a/content/admin/enterprise-management/monitoring-cluster-nodes.md +++ b/content/admin/enterprise-management/monitoring-cluster-nodes.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/monitoring-cluster-nodes versions: enterprise-server: '*' +topics: + - enterprise --- ### Manually checking cluster status diff --git a/content/admin/enterprise-management/monitoring-using-snmp.md b/content/admin/enterprise-management/monitoring-using-snmp.md index 2ef67fbbef..bcc5821b39 100644 --- a/content/admin/enterprise-management/monitoring-using-snmp.md +++ b/content/admin/enterprise-management/monitoring-using-snmp.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/enterprise-management/monitoring-using-snmp versions: enterprise-server: '*' +topics: + - enterprise --- SNMP is a common standard for monitoring devices over a network. We strongly recommend enabling SNMP so you can monitor the health of {% data variables.product.product_location %} and know when to add more memory, storage, or processor power to the host machine. diff --git a/content/admin/enterprise-management/monitoring-your-appliance.md b/content/admin/enterprise-management/monitoring-your-appliance.md index e8adac6a11..a73f9c02e3 100644 --- a/content/admin/enterprise-management/monitoring-your-appliance.md +++ b/content/admin/enterprise-management/monitoring-your-appliance.md @@ -9,5 +9,7 @@ redirect_from: mapTopic: true versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/enterprise-management/recommended-alert-thresholds.md b/content/admin/enterprise-management/recommended-alert-thresholds.md index ceae6ab760..3898e09a0b 100644 --- a/content/admin/enterprise-management/recommended-alert-thresholds.md +++ b/content/admin/enterprise-management/recommended-alert-thresholds.md @@ -8,6 +8,8 @@ redirect_from: - /enterprise/admin/enterprise-management/recommended-alert-thresholds versions: enterprise-server: '*' +topics: + - enterprise --- ### Monitoring storage diff --git a/content/admin/enterprise-management/recovering-a-high-availability-configuration.md b/content/admin/enterprise-management/recovering-a-high-availability-configuration.md index 879390f390..cc9cd0027e 100644 --- a/content/admin/enterprise-management/recovering-a-high-availability-configuration.md +++ b/content/admin/enterprise-management/recovering-a-high-availability-configuration.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/recovering-a-high-availability-configuration versions: enterprise-server: '*' +topics: + - enterprise --- You can use the former primary appliance as the new replica appliance if the failover was planned or was not related to the health of the appliance. If the failover was related to an issue with the primary appliance, you may prefer to create a new replica appliance. For more information, see "[Creating a high availability replica](/enterprise/{{ currentVersion }}/admin/guides/installation/creating-a-high-availability-replica/)." diff --git a/content/admin/enterprise-management/removing-a-high-availability-replica.md b/content/admin/enterprise-management/removing-a-high-availability-replica.md index 6002b89d1b..7f3ab841b7 100644 --- a/content/admin/enterprise-management/removing-a-high-availability-replica.md +++ b/content/admin/enterprise-management/removing-a-high-availability-replica.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/removing-a-high-availability-replica versions: enterprise-server: '*' +topics: + - enterprise --- ### Stopping replication temporarily diff --git a/content/admin/enterprise-management/replacing-a-cluster-node.md b/content/admin/enterprise-management/replacing-a-cluster-node.md index 4dde19d038..2f96afbd7d 100644 --- a/content/admin/enterprise-management/replacing-a-cluster-node.md +++ b/content/admin/enterprise-management/replacing-a-cluster-node.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/replacing-a-cluster-node versions: enterprise-server: '*' +topics: + - enterprise --- {% warning %} diff --git a/content/admin/enterprise-management/setting-up-external-monitoring.md b/content/admin/enterprise-management/setting-up-external-monitoring.md index f0163ff946..21031f8d8f 100644 --- a/content/admin/enterprise-management/setting-up-external-monitoring.md +++ b/content/admin/enterprise-management/setting-up-external-monitoring.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/setting-up-external-monitoring versions: enterprise-server: '*' +topics: + - enterprise --- ### About SNMP diff --git a/content/admin/enterprise-management/updating-the-virtual-machine-and-physical-resources.md b/content/admin/enterprise-management/updating-the-virtual-machine-and-physical-resources.md index 3c590160d0..b40afca279 100644 --- a/content/admin/enterprise-management/updating-the-virtual-machine-and-physical-resources.md +++ b/content/admin/enterprise-management/updating-the-virtual-machine-and-physical-resources.md @@ -9,5 +9,7 @@ redirect_from: mapTopic: true versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/enterprise-management/upgrade-requirements.md b/content/admin/enterprise-management/upgrade-requirements.md index 60da0b3d30..c06792a751 100644 --- a/content/admin/enterprise-management/upgrade-requirements.md +++ b/content/admin/enterprise-management/upgrade-requirements.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/enterprise-management/upgrade-requirements versions: enterprise-server: '*' +topics: + - enterprise --- {% note %} diff --git a/content/admin/enterprise-management/upgrading-a-cluster.md b/content/admin/enterprise-management/upgrading-a-cluster.md index 1be8e7d8b5..19fd10ebcd 100644 --- a/content/admin/enterprise-management/upgrading-a-cluster.md +++ b/content/admin/enterprise-management/upgrading-a-cluster.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-management/upgrading-a-cluster versions: enterprise-server: '*' +topics: + - enterprise --- ### Upgrading with a hotpatch {% data reusables.enterprise_installation.hotpatching-explanation %} The hotpatch installation script installs the hotpatch on every node in the cluster and restarts the services in their proper sequence to avoid downtime. diff --git a/content/admin/enterprise-management/upgrading-github-enterprise-server.md b/content/admin/enterprise-management/upgrading-github-enterprise-server.md index daefc6db50..a839c03410 100644 --- a/content/admin/enterprise-management/upgrading-github-enterprise-server.md +++ b/content/admin/enterprise-management/upgrading-github-enterprise-server.md @@ -15,6 +15,8 @@ redirect_from: - /enterprise/admin/enterprise-management/upgrading-github-enterprise-server versions: enterprise-server: '*' +topics: + - enterprise --- ### Preparing to upgrade @@ -251,4 +253,4 @@ To roll back from a feature release, restore from a VM snapshot to ensure that r ### Further reading - "[About upgrades to new releases](/admin/overview/about-upgrades-to-new-releases)" -{% endif %} \ No newline at end of file +{% endif %} diff --git a/content/admin/enterprise-support/about-github-enterprise-support.md b/content/admin/enterprise-support/about-github-enterprise-support.md index 696ce3441c..f731cfec52 100644 --- a/content/admin/enterprise-support/about-github-enterprise-support.md +++ b/content/admin/enterprise-support/about-github-enterprise-support.md @@ -6,6 +6,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- {% note %} diff --git a/content/admin/enterprise-support/about-github-premium-support-for-github-enterprise-server.md b/content/admin/enterprise-support/about-github-premium-support-for-github-enterprise-server.md index ecdcf02322..de2131bec7 100644 --- a/content/admin/enterprise-support/about-github-premium-support-for-github-enterprise-server.md +++ b/content/admin/enterprise-support/about-github-premium-support-for-github-enterprise-server.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/enterprise-support/about-github-premium-support-for-github-enterprise-server versions: enterprise-server: '*' +topics: + - enterprise --- {% note %} diff --git a/content/admin/enterprise-support/about-github-premium-support-for-github-enterprise.md b/content/admin/enterprise-support/about-github-premium-support-for-github-enterprise.md index b55487a008..8553ddf3da 100644 --- a/content/admin/enterprise-support/about-github-premium-support-for-github-enterprise.md +++ b/content/admin/enterprise-support/about-github-premium-support-for-github-enterprise.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/enterprise-support/about-github-premium-support-for-github-enterprise versions: enterprise-server: '*' +topics: + - enterprise --- {% note %} diff --git a/content/admin/enterprise-support/about-support-for-advanced-security.md b/content/admin/enterprise-support/about-support-for-advanced-security.md index f1eadede3a..d9f8d78ef9 100644 --- a/content/admin/enterprise-support/about-support-for-advanced-security.md +++ b/content/admin/enterprise-support/about-support-for-advanced-security.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/enterprise-support/about-support-for-advanced-security versions: enterprise-server: '*' +topics: + - enterprise --- {% note %} diff --git a/content/admin/enterprise-support/index.md b/content/admin/enterprise-support/index.md index d6f1ed9191..1393d3bc81 100644 --- a/content/admin/enterprise-support/index.md +++ b/content/admin/enterprise-support/index.md @@ -6,6 +6,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### Table of Contents diff --git a/content/admin/enterprise-support/overview.md b/content/admin/enterprise-support/overview.md index 67f3ad9d93..ce8e4498c5 100644 --- a/content/admin/enterprise-support/overview.md +++ b/content/admin/enterprise-support/overview.md @@ -7,4 +7,7 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- + diff --git a/content/admin/enterprise-support/preparing-to-submit-a-ticket.md b/content/admin/enterprise-support/preparing-to-submit-a-ticket.md index 9c70a25abf..4f0ebdb6d5 100644 --- a/content/admin/enterprise-support/preparing-to-submit-a-ticket.md +++ b/content/admin/enterprise-support/preparing-to-submit-a-ticket.md @@ -6,6 +6,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- Before submitting a ticket, you should: @@ -24,4 +26,4 @@ Especially for tickets with {% data variables.product.support_ticket_priority_ur - Be knowledgeable in your internal systems, tools, policies, and practices. - Be a proficient user of {% data variables.product.product_name %}. - Have full access and permissions to any services that are required to troubleshoot the issue. - - Be authorized to make the recommended changes to your network and any applicable products. \ No newline at end of file + - Be authorized to make the recommended changes to your network and any applicable products. diff --git a/content/admin/enterprise-support/providing-data-to-github-support.md b/content/admin/enterprise-support/providing-data-to-github-support.md index 2bb07afaab..3ea6981372 100644 --- a/content/admin/enterprise-support/providing-data-to-github-support.md +++ b/content/admin/enterprise-support/providing-data-to-github-support.md @@ -8,6 +8,8 @@ redirect_from: - /enterprise/admin/enterprise-support/providing-data-to-github-support versions: enterprise-server: '*' +topics: + - enterprise --- ### Creating and sharing diagnostic files diff --git a/content/admin/enterprise-support/reaching-github-support.md b/content/admin/enterprise-support/reaching-github-support.md index 7cf256ce56..51d55999d7 100644 --- a/content/admin/enterprise-support/reaching-github-support.md +++ b/content/admin/enterprise-support/reaching-github-support.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/enterprise-support/reaching-github-support versions: enterprise-server: '*' +topics: + - enterprise --- ### Using automated ticketing systems diff --git a/content/admin/enterprise-support/receiving-help-from-github-support.md b/content/admin/enterprise-support/receiving-help-from-github-support.md index 98b3cd0eea..c700ae6897 100644 --- a/content/admin/enterprise-support/receiving-help-from-github-support.md +++ b/content/admin/enterprise-support/receiving-help-from-github-support.md @@ -8,4 +8,7 @@ mapTopic: true versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- + diff --git a/content/admin/enterprise-support/submitting-a-ticket.md b/content/admin/enterprise-support/submitting-a-ticket.md index 5f396e34ca..cb16823728 100644 --- a/content/admin/enterprise-support/submitting-a-ticket.md +++ b/content/admin/enterprise-support/submitting-a-ticket.md @@ -6,6 +6,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### About submitting a ticket diff --git a/content/admin/github-actions/about-using-actions-on-github-enterprise-server.md b/content/admin/github-actions/about-using-actions-on-github-enterprise-server.md index 3b3b6da7eb..e87d29f61f 100644 --- a/content/admin/github-actions/about-using-actions-on-github-enterprise-server.md +++ b/content/admin/github-actions/about-using-actions-on-github-enterprise-server.md @@ -6,6 +6,8 @@ redirect_from: - /admin/github-actions/about-using-githubcom-actions-on-github-enterprise-server versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% data reusables.actions.enterprise-beta %} diff --git a/content/admin/github-actions/advanced-configuration-and-troubleshooting.md b/content/admin/github-actions/advanced-configuration-and-troubleshooting.md index fa3f0a4aa7..609640ef99 100644 --- a/content/admin/github-actions/advanced-configuration-and-troubleshooting.md +++ b/content/admin/github-actions/advanced-configuration-and-troubleshooting.md @@ -4,4 +4,7 @@ intro: 'Configure high availability for {% data variables.product.prodname_actio mapTopic: true versions: enterprise-server: '>=3.0' +topics: + - enterprise --- + diff --git a/content/admin/github-actions/backing-up-and-restoring-github-enterprise-server-with-github-actions-enabled.md b/content/admin/github-actions/backing-up-and-restoring-github-enterprise-server-with-github-actions-enabled.md index a2556020e8..1a687f2e87 100644 --- a/content/admin/github-actions/backing-up-and-restoring-github-enterprise-server-with-github-actions-enabled.md +++ b/content/admin/github-actions/backing-up-and-restoring-github-enterprise-server-with-github-actions-enabled.md @@ -4,6 +4,8 @@ shortTitle: Backing up and restoring intro: '{% data variables.product.prodname_actions %} data on your external storage provider is not included in regular {% data variables.product.prodname_ghe_server %} backups, and must be backed up separately.' versions: enterprise-server: '>=3.0' +topics: + - enterprise --- {% data reusables.actions.enterprise-storage-ha-backups %} diff --git a/content/admin/github-actions/enabling-automatic-access-to-githubcom-actions-using-github-connect.md b/content/admin/github-actions/enabling-automatic-access-to-githubcom-actions-using-github-connect.md index 5be9397384..8235057e02 100644 --- a/content/admin/github-actions/enabling-automatic-access-to-githubcom-actions-using-github-connect.md +++ b/content/admin/github-actions/enabling-automatic-access-to-githubcom-actions-using-github-connect.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/github-actions/enabling-automatic-access-to-githubcom-actions-using-github-connect versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% data reusables.actions.enterprise-beta %} diff --git a/content/admin/github-actions/enabling-github-actions-for-github-enterprise-server.md b/content/admin/github-actions/enabling-github-actions-for-github-enterprise-server.md index 886b40a786..1ab36ce2a1 100644 --- a/content/admin/github-actions/enabling-github-actions-for-github-enterprise-server.md +++ b/content/admin/github-actions/enabling-github-actions-for-github-enterprise-server.md @@ -4,4 +4,7 @@ intro: 'Learn how to configure storage and enable {% data variables.product.prod mapTopic: true versions: enterprise-server: '>=2.22' +topics: + - enterprise --- + diff --git a/content/admin/github-actions/enabling-github-actions-with-amazon-s3-storage.md b/content/admin/github-actions/enabling-github-actions-with-amazon-s3-storage.md index 1e94369d98..f545d49494 100644 --- a/content/admin/github-actions/enabling-github-actions-with-amazon-s3-storage.md +++ b/content/admin/github-actions/enabling-github-actions-with-amazon-s3-storage.md @@ -4,6 +4,8 @@ intro: 'You can enable {% data variables.product.prodname_actions %} on {% data permissions: 'Site administrators can enable {% data variables.product.prodname_actions %} and configure enterprise settings.' versions: enterprise-server: '>=3.0' +topics: + - enterprise --- ### Prerequisites diff --git a/content/admin/github-actions/enabling-github-actions-with-azure-blob-storage.md b/content/admin/github-actions/enabling-github-actions-with-azure-blob-storage.md index a9b21f3001..1245137438 100644 --- a/content/admin/github-actions/enabling-github-actions-with-azure-blob-storage.md +++ b/content/admin/github-actions/enabling-github-actions-with-azure-blob-storage.md @@ -4,6 +4,8 @@ intro: 'You can enable {% data variables.product.prodname_actions %} on {% data permissions: 'Site administrators can enable {% data variables.product.prodname_actions %} and configure enterprise settings.' versions: enterprise-server: '>=3.0' +topics: + - enterprise --- ### Prerequisites diff --git a/content/admin/github-actions/enabling-github-actions-with-minio-gateway-for-nas-storage.md b/content/admin/github-actions/enabling-github-actions-with-minio-gateway-for-nas-storage.md index d86f1a64b5..ba2c6c47ab 100644 --- a/content/admin/github-actions/enabling-github-actions-with-minio-gateway-for-nas-storage.md +++ b/content/admin/github-actions/enabling-github-actions-with-minio-gateway-for-nas-storage.md @@ -4,6 +4,8 @@ intro: 'You can enable {% data variables.product.prodname_actions %} on {% data permissions: 'Site administrators can enable {% data variables.product.prodname_actions %} and configure enterprise settings.' versions: enterprise-server: '>=3.0' +topics: + - enterprise --- ### Prerequisites diff --git a/content/admin/github-actions/enforcing-github-actions-policies-for-your-enterprise.md b/content/admin/github-actions/enforcing-github-actions-policies-for-your-enterprise.md index 82df246b43..b9f5e4fcf2 100644 --- a/content/admin/github-actions/enforcing-github-actions-policies-for-your-enterprise.md +++ b/content/admin/github-actions/enforcing-github-actions-policies-for-your-enterprise.md @@ -6,6 +6,8 @@ redirect_from: versions: enterprise-server: '>=2.22' github-ae: '*' +topics: + - enterprise --- {% data reusables.actions.ae-beta %} diff --git a/content/admin/github-actions/getting-started-with-github-actions-for-github-enterprise-server.md b/content/admin/github-actions/getting-started-with-github-actions-for-github-enterprise-server.md index 534f37520e..4cba468196 100644 --- a/content/admin/github-actions/getting-started-with-github-actions-for-github-enterprise-server.md +++ b/content/admin/github-actions/getting-started-with-github-actions-for-github-enterprise-server.md @@ -7,6 +7,8 @@ redirect_from: - /admin/github-actions/enabling-github-actions-and-configuring-storage versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% data reusables.actions.enterprise-beta %} diff --git a/content/admin/github-actions/high-availability-for-github-actions.md b/content/admin/github-actions/high-availability-for-github-actions.md index 26ccc90fba..c893e6c059 100644 --- a/content/admin/github-actions/high-availability-for-github-actions.md +++ b/content/admin/github-actions/high-availability-for-github-actions.md @@ -3,6 +3,8 @@ title: High availability for GitHub Actions intro: 'There are some special considerations for administering {% data variables.product.prodname_actions %} in a high availability configuration.' versions: enterprise-server: '>=3.0' +topics: + - enterprise --- ### Replication or redundancy of your {% data variables.product.prodname_actions %} data diff --git a/content/admin/github-actions/index.md b/content/admin/github-actions/index.md index e95b18f98a..6caf9cf8e2 100644 --- a/content/admin/github-actions/index.md +++ b/content/admin/github-actions/index.md @@ -6,6 +6,8 @@ redirect_from: versions: enterprise-server: '>=2.22' github-ae: '*' +topics: + - enterprise --- {% data reusables.actions.ae-beta %} diff --git a/content/admin/github-actions/managing-access-to-actions-from-githubcom.md b/content/admin/github-actions/managing-access-to-actions-from-githubcom.md index 51d601c89f..78e01a4ca3 100644 --- a/content/admin/github-actions/managing-access-to-actions-from-githubcom.md +++ b/content/admin/github-actions/managing-access-to-actions-from-githubcom.md @@ -6,5 +6,7 @@ redirect_from: - /enterprise/admin/github-actions/managing-access-to-actions-from-githubcom versions: enterprise-server: '>=2.22' +topics: + - enterprise --- diff --git a/content/admin/github-actions/manually-syncing-actions-from-githubcom.md b/content/admin/github-actions/manually-syncing-actions-from-githubcom.md index f36947c4bc..3f8f07e6ba 100644 --- a/content/admin/github-actions/manually-syncing-actions-from-githubcom.md +++ b/content/admin/github-actions/manually-syncing-actions-from-githubcom.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/github-actions/manually-syncing-actions-from-githubcom versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% data reusables.actions.enterprise-beta %} diff --git a/content/admin/github-actions/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access.md b/content/admin/github-actions/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access.md index dfc57ac64b..a380a9961e 100644 --- a/content/admin/github-actions/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access.md +++ b/content/admin/github-actions/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/github-actions/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% data reusables.actions.enterprise-beta %} diff --git a/content/admin/github-actions/troubleshooting-github-actions-for-your-enterprise.md b/content/admin/github-actions/troubleshooting-github-actions-for-your-enterprise.md index df08b0d047..5ef91e72d9 100644 --- a/content/admin/github-actions/troubleshooting-github-actions-for-your-enterprise.md +++ b/content/admin/github-actions/troubleshooting-github-actions-for-your-enterprise.md @@ -4,6 +4,8 @@ intro: 'Troubleshooting common issues that occur when using {% data variables.pr permissions: 'Site administrators can troubleshoot {% data variables.product.prodname_actions %} issues and modify {% data variables.product.prodname_ghe_server %} configurations.' versions: enterprise-server: '>=3.0' +topics: + - enterprise --- ### Configuring self-hosted runners when using a self-signed certificate for {% data variables.product.prodname_ghe_server %} diff --git a/content/admin/github-actions/using-a-staging-environment.md b/content/admin/github-actions/using-a-staging-environment.md index f2d387de55..d463c8a01c 100644 --- a/content/admin/github-actions/using-a-staging-environment.md +++ b/content/admin/github-actions/using-a-staging-environment.md @@ -3,6 +3,8 @@ title: Using a staging environment intro: 'Learn about using {% data variables.product.prodname_actions %} with {% data variables.product.prodname_ghe_server %} staging environments.' versions: enterprise-server: '>=3.0' +topics: + - enterprise --- It can be useful to have a staging or testing environment for {% data variables.product.product_location %}, so that you can test updates or new features before implementing them in your production environment. diff --git a/content/admin/installation/index.md b/content/admin/installation/index.md index ca489927cc..582246e33e 100644 --- a/content/admin/installation/index.md +++ b/content/admin/installation/index.md @@ -11,6 +11,8 @@ redirect_from: - /enterprise/admin/installation versions: enterprise-server: '*' +topics: + - enterprise --- For more information, or to purchase {% data variables.product.prodname_enterprise %}, see [{% data variables.product.prodname_enterprise %}](https://github.com/enterprise). diff --git a/content/admin/installation/installing-github-enterprise-server-on-aws.md b/content/admin/installation/installing-github-enterprise-server-on-aws.md index 50d3baa627..f6de6fe0ee 100644 --- a/content/admin/installation/installing-github-enterprise-server-on-aws.md +++ b/content/admin/installation/installing-github-enterprise-server-on-aws.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/installation/installing-github-enterprise-server-on-aws versions: enterprise-server: '*' +topics: + - enterprise --- ### Prerequisites diff --git a/content/admin/installation/installing-github-enterprise-server-on-azure.md b/content/admin/installation/installing-github-enterprise-server-on-azure.md index be1006b3f7..008413e67e 100644 --- a/content/admin/installation/installing-github-enterprise-server-on-azure.md +++ b/content/admin/installation/installing-github-enterprise-server-on-azure.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/installation/installing-github-enterprise-server-on-azure versions: enterprise-server: '*' +topics: + - enterprise --- You can deploy {% data variables.product.prodname_ghe_server %} on global Azure or Azure Government. diff --git a/content/admin/installation/installing-github-enterprise-server-on-google-cloud-platform.md b/content/admin/installation/installing-github-enterprise-server-on-google-cloud-platform.md index e21838d06a..6f80158971 100644 --- a/content/admin/installation/installing-github-enterprise-server-on-google-cloud-platform.md +++ b/content/admin/installation/installing-github-enterprise-server-on-google-cloud-platform.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/installation/installing-github-enterprise-server-on-google-cloud-platform versions: enterprise-server: '*' +topics: + - enterprise --- ### Prerequisites diff --git a/content/admin/installation/installing-github-enterprise-server-on-hyper-v.md b/content/admin/installation/installing-github-enterprise-server-on-hyper-v.md index 42a146e2f9..eded2b581a 100644 --- a/content/admin/installation/installing-github-enterprise-server-on-hyper-v.md +++ b/content/admin/installation/installing-github-enterprise-server-on-hyper-v.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/installation/installing-github-enterprise-server-on-hyper-v versions: enterprise-server: '*' +topics: + - enterprise --- ### Prerequisites diff --git a/content/admin/installation/installing-github-enterprise-server-on-openstack-kvm.md b/content/admin/installation/installing-github-enterprise-server-on-openstack-kvm.md index 2695c4d612..79453ba7f6 100644 --- a/content/admin/installation/installing-github-enterprise-server-on-openstack-kvm.md +++ b/content/admin/installation/installing-github-enterprise-server-on-openstack-kvm.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/installation/installing-github-enterprise-server-on-openstack-kvm versions: enterprise-server: '*' +topics: + - enterprise --- ### Prerequisites diff --git a/content/admin/installation/installing-github-enterprise-server-on-vmware.md b/content/admin/installation/installing-github-enterprise-server-on-vmware.md index ce4f58e9bb..0646a0cdea 100644 --- a/content/admin/installation/installing-github-enterprise-server-on-vmware.md +++ b/content/admin/installation/installing-github-enterprise-server-on-vmware.md @@ -9,6 +9,8 @@ redirect_from: - /enterprise/admin/installation/installing-github-enterprise-server-on-vmware versions: enterprise-server: '*' +topics: + - enterprise --- ### Prerequisites diff --git a/content/admin/installation/installing-github-enterprise-server-on-xenserver.md b/content/admin/installation/installing-github-enterprise-server-on-xenserver.md index fb0341074d..7b87108661 100644 --- a/content/admin/installation/installing-github-enterprise-server-on-xenserver.md +++ b/content/admin/installation/installing-github-enterprise-server-on-xenserver.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/installation/installing-github-enterprise-server-on-xenserver versions: enterprise-server: '*' +topics: + - enterprise --- ### Prerequisites diff --git a/content/admin/installation/setting-up-a-github-enterprise-server-instance.md b/content/admin/installation/setting-up-a-github-enterprise-server-instance.md index 92a5f510c9..865536adbe 100644 --- a/content/admin/installation/setting-up-a-github-enterprise-server-instance.md +++ b/content/admin/installation/setting-up-a-github-enterprise-server-instance.md @@ -10,5 +10,7 @@ redirect_from: mapTopic: true versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/installation/setting-up-a-staging-instance.md b/content/admin/installation/setting-up-a-staging-instance.md index 972f5439d3..082e71f7fe 100644 --- a/content/admin/installation/setting-up-a-staging-instance.md +++ b/content/admin/installation/setting-up-a-staging-instance.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/installation/setting-up-a-staging-instance versions: enterprise-server: '*' +topics: + - enterprise --- {% tip %} @@ -28,4 +30,4 @@ To thoroughly test a {% data variables.product.prodname_ghe_server %} appliance ### Further reading - "[About upgrades to new releases](/admin/overview/about-upgrades-to-new-releases)" -{% endif %} \ No newline at end of file +{% endif %} diff --git a/content/admin/overview/about-enterprise-accounts.md b/content/admin/overview/about-enterprise-accounts.md index 4c37b9eed5..42352b9ac1 100644 --- a/content/admin/overview/about-enterprise-accounts.md +++ b/content/admin/overview/about-enterprise-accounts.md @@ -7,6 +7,8 @@ redirect_from: versions: enterprise-server: '>=2.20' github-ae: '*' +topics: + - enterprise --- ### About enterprise accounts on {% data variables.product.product_name %} diff --git a/content/admin/overview/about-the-github-enterprise-api.md b/content/admin/overview/about-the-github-enterprise-api.md index 8f75a39a07..d79b6c703a 100644 --- a/content/admin/overview/about-the-github-enterprise-api.md +++ b/content/admin/overview/about-the-github-enterprise-api.md @@ -11,6 +11,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- With the APIs, you can automate many administrative tasks. Some examples include: diff --git a/content/admin/overview/about-upgrades-to-new-releases.md b/content/admin/overview/about-upgrades-to-new-releases.md index f25eeb31ca..475fea0e5f 100644 --- a/content/admin/overview/about-upgrades-to-new-releases.md +++ b/content/admin/overview/about-upgrades-to-new-releases.md @@ -5,6 +5,8 @@ intro: '{% if currentVersion == "github-ae@latest" %}Your {% data variables.prod versions: enterprise-server: '>=3.0' github-ae: '*' +topics: + - enterprise --- {% data variables.product.product_name %} is constantly improving, with new functionality and bug fixes introduced through major and minor releases. {% if currentVersion == "github-ae@latest" %}{% data variables.product.prodname_ghe_managed %} is a fully managed service, so {% data variables.product.company_short %} completes the upgrade process for your enterprise.{% endif %} diff --git a/content/admin/overview/managing-billing-for-your-enterprise.md b/content/admin/overview/managing-billing-for-your-enterprise.md index 97c0ba8c03..8b8000cdc4 100644 --- a/content/admin/overview/managing-billing-for-your-enterprise.md +++ b/content/admin/overview/managing-billing-for-your-enterprise.md @@ -1,6 +1,6 @@ --- title: Managing billing for your enterprise -intro: 'You can view billing information for your enterprise.' +intro: You can view billing information for your enterprise. product: '{% data reusables.gated-features.enterprise-accounts %}' redirect_from: - /enterprise/admin/installation/managing-billing-for-github-enterprise @@ -9,6 +9,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- {% if currentVersion == "github-ae@latest" %} diff --git a/content/admin/overview/managing-your-github-enterprise-license.md b/content/admin/overview/managing-your-github-enterprise-license.md index b5c69a8999..5318d5ca08 100644 --- a/content/admin/overview/managing-your-github-enterprise-license.md +++ b/content/admin/overview/managing-your-github-enterprise-license.md @@ -14,6 +14,8 @@ redirect_from: - /enterprise/admin/overview/managing-your-github-enterprise-license versions: enterprise-server: '*' +topics: + - enterprise --- ### About {% data variables.product.prodname_enterprise %} licenses diff --git a/content/admin/overview/system-overview.md b/content/admin/overview/system-overview.md index c86afe795a..a84cc7b275 100644 --- a/content/admin/overview/system-overview.md +++ b/content/admin/overview/system-overview.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/overview/system-overview versions: enterprise-server: '*' +topics: + - enterprise --- ### Storage architecture diff --git a/content/admin/packages/configuring-package-ecosystem-support-for-your-enterprise.md b/content/admin/packages/configuring-package-ecosystem-support-for-your-enterprise.md index 1f15dc49c2..b544920183 100644 --- a/content/admin/packages/configuring-package-ecosystem-support-for-your-enterprise.md +++ b/content/admin/packages/configuring-package-ecosystem-support-for-your-enterprise.md @@ -6,6 +6,8 @@ redirect_from: - /admin/packages/configuring-packages-support-for-your-enterprise versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% data reusables.package_registry.packages-ghes-release-stage %} diff --git a/content/admin/packages/enabling-github-packages-with-aws.md b/content/admin/packages/enabling-github-packages-with-aws.md index 4cfb1b0123..d1ac35a260 100644 --- a/content/admin/packages/enabling-github-packages-with-aws.md +++ b/content/admin/packages/enabling-github-packages-with-aws.md @@ -3,6 +3,8 @@ title: Enabling GitHub Packages with AWS intro: 'Set up {% data variables.product.prodname_registry %} with AWS as your external storage.' versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% warning %} diff --git a/content/admin/packages/enabling-github-packages-with-azure-blob-storage.md b/content/admin/packages/enabling-github-packages-with-azure-blob-storage.md index 65fd365621..913cfba14c 100644 --- a/content/admin/packages/enabling-github-packages-with-azure-blob-storage.md +++ b/content/admin/packages/enabling-github-packages-with-azure-blob-storage.md @@ -3,6 +3,8 @@ title: Enabling GitHub Packages with Azure Blob Storage intro: 'Set up {% data variables.product.prodname_registry %} with Azure Blob Storage as your external storage.' versions: enterprise-server: '>=3.0' +topics: + - enterprise --- {% warning %} diff --git a/content/admin/packages/enabling-github-packages-with-minio.md b/content/admin/packages/enabling-github-packages-with-minio.md index b0cec33688..9123b05147 100644 --- a/content/admin/packages/enabling-github-packages-with-minio.md +++ b/content/admin/packages/enabling-github-packages-with-minio.md @@ -3,6 +3,8 @@ title: Enabling GitHub Packages with MinIO intro: 'Set up {% data variables.product.prodname_registry %} with MinIO as your external storage.' versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% warning %} diff --git a/content/admin/packages/getting-started-with-github-packages-for-your-enterprise.md b/content/admin/packages/getting-started-with-github-packages-for-your-enterprise.md index 9f92df1f87..16aae55c86 100644 --- a/content/admin/packages/getting-started-with-github-packages-for-your-enterprise.md +++ b/content/admin/packages/getting-started-with-github-packages-for-your-enterprise.md @@ -6,6 +6,8 @@ redirect_from: - /admin/packages/enabling-github-packages-for-your-enterprise versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% if currentVersion == "enterprise-server@2.22" %} diff --git a/content/admin/packages/index.md b/content/admin/packages/index.md index 9808ef3fde..b4f90820e7 100644 --- a/content/admin/packages/index.md +++ b/content/admin/packages/index.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/packages versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% data reusables.package_registry.packages-ghes-release-stage %} diff --git a/content/admin/packages/quickstart-for-configuring-your-minio-storage-bucket-for-github-packages.md b/content/admin/packages/quickstart-for-configuring-your-minio-storage-bucket-for-github-packages.md index 646d1454a2..fc418b26e2 100644 --- a/content/admin/packages/quickstart-for-configuring-your-minio-storage-bucket-for-github-packages.md +++ b/content/admin/packages/quickstart-for-configuring-your-minio-storage-bucket-for-github-packages.md @@ -3,6 +3,8 @@ title: Quickstart for configuring your MinIO storage bucket for GitHub Packages intro: 'Configure your custom MinIO storage bucket for use with {% data variables.product.prodname_registry %}.' versions: enterprise-server: '>=2.22' +topics: + - enterprise --- {% data reusables.package_registry.packages-ghes-release-stage %} diff --git a/content/admin/policies/about-pre-receive-hooks.md b/content/admin/policies/about-pre-receive-hooks.md index ec699e2ccf..effb31b1b4 100644 --- a/content/admin/policies/about-pre-receive-hooks.md +++ b/content/admin/policies/about-pre-receive-hooks.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/policies/about-pre-receive-hooks versions: enterprise-server: '*' +topics: + - enterprise --- When a push occurs, each script runs in an isolated environment and can perform checks on the content of the push. The scripts will cause the push to be accepted if the exit status is 0, or rejected if the exit status is non-zero. diff --git a/content/admin/policies/creating-a-pre-receive-hook-environment.md b/content/admin/policies/creating-a-pre-receive-hook-environment.md index 64ab4099fc..f798129733 100644 --- a/content/admin/policies/creating-a-pre-receive-hook-environment.md +++ b/content/admin/policies/creating-a-pre-receive-hook-environment.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/policies/creating-a-pre-receive-hook-environment versions: enterprise-server: '*' +topics: + - enterprise --- A pre-receive environment for {% data variables.product.prodname_ghe_server %} is a Linux [`chroot`](https://en.wikipedia.org/wiki/Chroot) environment. Because pre-receive hooks execute on every push event, they should be fast and lightweight. The environment needed for such checks will typically be minimal. diff --git a/content/admin/policies/creating-a-pre-receive-hook-script.md b/content/admin/policies/creating-a-pre-receive-hook-script.md index c501d76e58..71f3a8e971 100644 --- a/content/admin/policies/creating-a-pre-receive-hook-script.md +++ b/content/admin/policies/creating-a-pre-receive-hook-script.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/policies/creating-a-pre-receive-hook-script versions: enterprise-server: '*' +topics: + - enterprise --- You can see examples of pre-receive hooks for {% data variables.product.prodname_ghe_server %} in the [`github/platform-samples` repository](https://github.com/github/platform-samples/tree/master/pre-receive-hooks). diff --git a/content/admin/policies/enforcing-policies-for-your-enterprise.md b/content/admin/policies/enforcing-policies-for-your-enterprise.md index b3673275fc..c5583b723d 100644 --- a/content/admin/policies/enforcing-policies-for-your-enterprise.md +++ b/content/admin/policies/enforcing-policies-for-your-enterprise.md @@ -6,5 +6,7 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- diff --git a/content/admin/policies/enforcing-policy-with-pre-receive-hooks.md b/content/admin/policies/enforcing-policy-with-pre-receive-hooks.md index 49c8daec91..62f4721a65 100644 --- a/content/admin/policies/enforcing-policy-with-pre-receive-hooks.md +++ b/content/admin/policies/enforcing-policy-with-pre-receive-hooks.md @@ -7,5 +7,7 @@ redirect_from: - /enterprise/admin/policies/enforcing-policy-with-pre-receive-hooks versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/policies/enforcing-repository-management-policies-in-your-enterprise.md b/content/admin/policies/enforcing-repository-management-policies-in-your-enterprise.md index de657754d3..adb7c0bf50 100644 --- a/content/admin/policies/enforcing-repository-management-policies-in-your-enterprise.md +++ b/content/admin/policies/enforcing-repository-management-policies-in-your-enterprise.md @@ -28,6 +28,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### Configuring the default visibility of new repositories in your enterprise @@ -242,4 +244,4 @@ If necessary, you can prevent repository administrators from changing anonymous ![Enforcement checkbox](/assets/images/help/business-accounts/default-branch-name-enforce.png) 5. Click **Update**. ![Update button](/assets/images/help/business-accounts/default-branch-name-update.png) -{% endif %} \ No newline at end of file +{% endif %} diff --git a/content/admin/policies/index.md b/content/admin/policies/index.md index 9c665ea894..2588b9ba09 100644 --- a/content/admin/policies/index.md +++ b/content/admin/policies/index.md @@ -7,6 +7,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- diff --git a/content/admin/policies/managing-pre-receive-hooks-on-the-github-enterprise-server-appliance.md b/content/admin/policies/managing-pre-receive-hooks-on-the-github-enterprise-server-appliance.md index 806dd27df9..78a8dbb31f 100644 --- a/content/admin/policies/managing-pre-receive-hooks-on-the-github-enterprise-server-appliance.md +++ b/content/admin/policies/managing-pre-receive-hooks-on-the-github-enterprise-server-appliance.md @@ -7,6 +7,8 @@ redirect_from: - /enterprise/admin/policies/managing-pre-receive-hooks-on-the-github-enterprise-server-appliance versions: enterprise-server: '*' +topics: + - enterprise --- ### Creating pre-receive hooks diff --git a/content/admin/release-notes.md b/content/admin/release-notes.md index 4010feb879..3608580c91 100644 --- a/content/admin/release-notes.md +++ b/content/admin/release-notes.md @@ -1,7 +1,10 @@ --- title: Release notes -intro: The release notes for {{ allVersions[currentVersion].versionTitle }}. +intro: 'The release notes for {{ allVersions[currentVersion].versionTitle }}.' layout: release-notes versions: enterprise-server: '*' +topics: + - enterprise --- + diff --git a/content/admin/user-management/about-migrations.md b/content/admin/user-management/about-migrations.md index e04bdf4f4a..4761a77561 100644 --- a/content/admin/user-management/about-migrations.md +++ b/content/admin/user-management/about-migrations.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/user-management/about-migrations versions: enterprise-server: '*' +topics: + - enterprise --- ### Types of migrations diff --git a/content/admin/user-management/activity-dashboard.md b/content/admin/user-management/activity-dashboard.md index 5fb4fce0d9..36572f7c90 100644 --- a/content/admin/user-management/activity-dashboard.md +++ b/content/admin/user-management/activity-dashboard.md @@ -1,6 +1,6 @@ --- title: Activity dashboard -intro: 'The Activity dashboard gives you an overview of all the activity in your enterprise.' +intro: The Activity dashboard gives you an overview of all the activity in your enterprise. redirect_from: - /enterprise/admin/articles/activity-dashboard/ - /enterprise/admin/installation/activity-dashboard @@ -8,6 +8,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- The Activity dashboard provides weekly, monthly, and yearly graphs of the number of: diff --git a/content/admin/user-management/adding-people-to-teams.md b/content/admin/user-management/adding-people-to-teams.md index 0a94dea0aa..cae2ec54c9 100644 --- a/content/admin/user-management/adding-people-to-teams.md +++ b/content/admin/user-management/adding-people-to-teams.md @@ -8,6 +8,8 @@ redirect_from: intro: 'Once a team has been created, organization admins can add users from {% data variables.product.product_location %} to the team and determine which repositories they have access to.' versions: enterprise-server: '*' +topics: + - enterprise --- Each team has its own individually defined [access permissions for repositories owned by your organization](/articles/permission-levels-for-an-organization). diff --git a/content/admin/user-management/audit-logging.md b/content/admin/user-management/audit-logging.md index 8a8da98e14..d4eb94ca04 100644 --- a/content/admin/user-management/audit-logging.md +++ b/content/admin/user-management/audit-logging.md @@ -8,6 +8,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- For a full list, see "[Audited actions](/admin/user-management/audited-actions)." For more information on finding a particular action, see "[Searching the audit log](/admin/user-management/searching-the-audit-log)." @@ -38,4 +40,4 @@ This example shows that commits were pushed to a repository. ``` Oct 26 02:19:31 github-ent github_audit: { "pid":22860, "ppid":22859, "program":"receive-pack", "git_dir":"/data/repositories/some-user/some-repository.git", "hostname":"github-ent", "pusher":"some-user", "real_ip":"10.0.0.51", "user_agent":"git/1.7.10.4", "repo_id":1, "repo_name":"some-user/some-repository", "transaction_id":"b031b7dc7043c87323a75f7a92092ef1456e5fbaef995c68", "frontend_ppid":1, "repo_public":true, "user_name":"some-user", "user_login":"some-user", "frontend_pid":18238, "frontend":"github-ent", "user_email":"some-user@github.example.com", "user_id":2, "pgroup":"github-ent_22860", "status":"post_receive_hook", "features":" report-status side-band-64k", "received_objects":3, "receive_pack_size":243, "non_fast_forward":false, "current_ref":"refs/heads/main" } ``` -{% endif %} \ No newline at end of file +{% endif %} diff --git a/content/admin/user-management/audited-actions.md b/content/admin/user-management/audited-actions.md index 57ed82a230..eaf820e04b 100644 --- a/content/admin/user-management/audited-actions.md +++ b/content/admin/user-management/audited-actions.md @@ -9,6 +9,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- #### Authentication diff --git a/content/admin/user-management/auditing-ssh-keys.md b/content/admin/user-management/auditing-ssh-keys.md index fca0dbe5be..fa8aee9730 100644 --- a/content/admin/user-management/auditing-ssh-keys.md +++ b/content/admin/user-management/auditing-ssh-keys.md @@ -7,6 +7,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- Once initiated, the audit disables all existing SSH keys and forces users to approve or reject them before they're able to clone, pull, or push to any repositories. An audit is useful in situations where an employee or contractor leaves the company and you need to ensure that all keys are verified. diff --git a/content/admin/user-management/auditing-users-across-your-enterprise.md b/content/admin/user-management/auditing-users-across-your-enterprise.md index 015fe8c7a2..d644c7cbeb 100644 --- a/content/admin/user-management/auditing-users-across-your-enterprise.md +++ b/content/admin/user-management/auditing-users-across-your-enterprise.md @@ -8,6 +8,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### Accessing the audit log diff --git a/content/admin/user-management/best-practices-for-user-security.md b/content/admin/user-management/best-practices-for-user-security.md index beae6174be..a0de18848f 100644 --- a/content/admin/user-management/best-practices-for-user-security.md +++ b/content/admin/user-management/best-practices-for-user-security.md @@ -6,6 +6,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- {% if enterpriseServerVersions contains currentVersion %} diff --git a/content/admin/user-management/configuring-git-large-file-storage-for-your-enterprise.md b/content/admin/user-management/configuring-git-large-file-storage-for-your-enterprise.md index e51686cb1f..bd22261272 100644 --- a/content/admin/user-management/configuring-git-large-file-storage-for-your-enterprise.md +++ b/content/admin/user-management/configuring-git-large-file-storage-for-your-enterprise.md @@ -15,6 +15,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### About {% data variables.large_files.product_name_long %} diff --git a/content/admin/user-management/configuring-visibility-for-organization-membership.md b/content/admin/user-management/configuring-visibility-for-organization-membership.md index 6551ad31f8..4b051cbd69 100644 --- a/content/admin/user-management/configuring-visibility-for-organization-membership.md +++ b/content/admin/user-management/configuring-visibility-for-organization-membership.md @@ -6,6 +6,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- {% if enterpriseServerVersions contains currentVersion %} diff --git a/content/admin/user-management/continuous-integration-using-jenkins.md b/content/admin/user-management/continuous-integration-using-jenkins.md index 8f1ebe6bda..74cc0fc964 100644 --- a/content/admin/user-management/continuous-integration-using-jenkins.md +++ b/content/admin/user-management/continuous-integration-using-jenkins.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/user-management/continuous-integration-using-jenkins versions: enterprise-server: '*' +topics: + - enterprise --- ### Requirements diff --git a/content/admin/user-management/creating-teams.md b/content/admin/user-management/creating-teams.md index 96c25bbb5a..73de830082 100644 --- a/content/admin/user-management/creating-teams.md +++ b/content/admin/user-management/creating-teams.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/user-management/creating-teams versions: enterprise-server: '*' +topics: + - enterprise --- Teams are central to many of {% data variables.product.prodname_dotcom %}'s collaborative features, such as team @mentions to notify appropriate parties that you'd like to request their input or attention. For more information, see "[Permission levels for an organization repository](/enterprise/{{ currentVersion }}/user/articles/repository-permission-levels-for-an-organization/)". diff --git a/content/admin/user-management/customizing-user-messages-for-your-enterprise.md b/content/admin/user-management/customizing-user-messages-for-your-enterprise.md index 8d20c8a7ad..fb040c543b 100644 --- a/content/admin/user-management/customizing-user-messages-for-your-enterprise.md +++ b/content/admin/user-management/customizing-user-messages-for-your-enterprise.md @@ -8,6 +8,8 @@ intro: 'You can create custom messages that users will see on {% data variables. versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### About user messages diff --git a/content/admin/user-management/disabling-git-ssh-access-on-your-enterprise.md b/content/admin/user-management/disabling-git-ssh-access-on-your-enterprise.md index 1578faba94..ed0284421e 100644 --- a/content/admin/user-management/disabling-git-ssh-access-on-your-enterprise.md +++ b/content/admin/user-management/disabling-git-ssh-access-on-your-enterprise.md @@ -13,10 +13,12 @@ redirect_from: - /enterprise/admin/installation/disabling-git-ssh-access-on-github-enterprise-server - /enterprise/admin/user-management/disabling-git-ssh-access-on-github-enterprise-server - /admin/user-management/disabling-git-ssh-access-on-github-enterprise-server -intro: 'You can prevent people from using Git over SSH for certain or all repositories on your enterprise.' +intro: You can prevent people from using Git over SSH for certain or all repositories on your enterprise. versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### Disabling Git SSH access to a specific repository diff --git a/content/admin/user-management/exporting-migration-data-from-githubcom.md b/content/admin/user-management/exporting-migration-data-from-githubcom.md index 7856792cb0..6112f4c241 100644 --- a/content/admin/user-management/exporting-migration-data-from-githubcom.md +++ b/content/admin/user-management/exporting-migration-data-from-githubcom.md @@ -11,6 +11,8 @@ redirect_from: - /enterprise/admin/user-management/exporting-migration-data-from-githubcom versions: enterprise-server: '*' +topics: + - enterprise --- ### Preparing the source organization on {% data variables.product.prodname_dotcom %} diff --git a/content/admin/user-management/exporting-migration-data-from-your-enterprise.md b/content/admin/user-management/exporting-migration-data-from-your-enterprise.md index da606dbe91..a777e740e3 100644 --- a/content/admin/user-management/exporting-migration-data-from-your-enterprise.md +++ b/content/admin/user-management/exporting-migration-data-from-your-enterprise.md @@ -11,6 +11,8 @@ redirect_from: - /enterprise/admin/user-management/exporting-migration-data-from-your-enterprise versions: enterprise-server: '*' +topics: + - enterprise --- ### Preparing the {% data variables.product.prodname_ghe_server %} source instance diff --git a/content/admin/user-management/importing-data-from-third-party-version-control-systems.md b/content/admin/user-management/importing-data-from-third-party-version-control-systems.md index 8a81872d82..4fce02539d 100644 --- a/content/admin/user-management/importing-data-from-third-party-version-control-systems.md +++ b/content/admin/user-management/importing-data-from-third-party-version-control-systems.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/user-management/importing-data-from-third-party-version-control-systems versions: enterprise-server: '*' +topics: + - enterprise --- ### Importing projects from Mercurial diff --git a/content/admin/user-management/index.md b/content/admin/user-management/index.md index 73f0672568..6bbed26d46 100644 --- a/content/admin/user-management/index.md +++ b/content/admin/user-management/index.md @@ -11,6 +11,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- diff --git a/content/admin/user-management/log-forwarding.md b/content/admin/user-management/log-forwarding.md index 00ad4741f3..c30299376f 100644 --- a/content/admin/user-management/log-forwarding.md +++ b/content/admin/user-management/log-forwarding.md @@ -9,6 +9,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- Any log collection system that supports syslog-style log streams is supported (e.g., [Logstash](http://logstash.net/) and [Splunk](http://docs.splunk.com/Documentation/Splunk/latest/Data/Monitornetworkports)). diff --git a/content/admin/user-management/managing-dormant-users.md b/content/admin/user-management/managing-dormant-users.md index 9aaaccfb90..99c8980a2c 100644 --- a/content/admin/user-management/managing-dormant-users.md +++ b/content/admin/user-management/managing-dormant-users.md @@ -5,10 +5,12 @@ redirect_from: - /enterprise/admin/articles/viewing-dormant-users/ - /enterprise/admin/articles/determining-whether-a-user-account-is-dormant/ - /enterprise/admin/user-management/managing-dormant-users -intro: A user account is considered to be dormant if it has not been active for at least a month.{% if enterpriseServerVersions contains currentVersion %} You may choose to suspend dormant users to free up user licenses.{% endif %} +intro: 'A user account is considered to be dormant if it has not been active for at least a month.{% if enterpriseServerVersions contains currentVersion %} You may choose to suspend dormant users to free up user licenses.{% endif %}' versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- "Activity" includes, but is not limited to: diff --git a/content/admin/user-management/managing-global-webhooks.md b/content/admin/user-management/managing-global-webhooks.md index e34217f4ca..8dfcaa45e9 100644 --- a/content/admin/user-management/managing-global-webhooks.md +++ b/content/admin/user-management/managing-global-webhooks.md @@ -7,6 +7,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### About global webhooks diff --git a/content/admin/user-management/managing-organizations-in-your-enterprise.md b/content/admin/user-management/managing-organizations-in-your-enterprise.md index 08415450a9..0fddb06a87 100644 --- a/content/admin/user-management/managing-organizations-in-your-enterprise.md +++ b/content/admin/user-management/managing-organizations-in-your-enterprise.md @@ -10,4 +10,7 @@ mapTopic: true versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- + diff --git a/content/admin/user-management/managing-projects-using-jira.md b/content/admin/user-management/managing-projects-using-jira.md index fb919a1769..c6ea376e22 100644 --- a/content/admin/user-management/managing-projects-using-jira.md +++ b/content/admin/user-management/managing-projects-using-jira.md @@ -9,6 +9,8 @@ redirect_from: - /enterprise/admin/user-management/managing-projects-using-jira versions: enterprise-server: '*' +topics: + - enterprise --- ### Connecting JIRA to a {% data variables.product.prodname_enterprise %} organization diff --git a/content/admin/user-management/managing-repositories-in-your-enterprise.md b/content/admin/user-management/managing-repositories-in-your-enterprise.md index 4da07ed3b7..bf4eb99cac 100644 --- a/content/admin/user-management/managing-repositories-in-your-enterprise.md +++ b/content/admin/user-management/managing-repositories-in-your-enterprise.md @@ -1,6 +1,6 @@ --- title: Managing repositories in your enterprise -intro: 'You can manage the settings available to repository administrators in your enterprise.' +intro: You can manage the settings available to repository administrators in your enterprise. redirect_from: - /enterprise/admin/user-management/repositories - /enterprise/admin/user-management/managing-repositories-in-your-enterprise @@ -8,5 +8,7 @@ mapTopic: true versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- diff --git a/content/admin/user-management/managing-users-in-your-enterprise.md b/content/admin/user-management/managing-users-in-your-enterprise.md index 63a373005f..f5ee73f94a 100644 --- a/content/admin/user-management/managing-users-in-your-enterprise.md +++ b/content/admin/user-management/managing-users-in-your-enterprise.md @@ -1,6 +1,6 @@ --- title: Managing users in your enterprise -intro: 'You can audit user activity and manage user settings.' +intro: You can audit user activity and manage user settings. redirect_from: - /enterprise/admin/guides/user-management/enabling-avatars-and-identicons/ - /enterprise/admin/user-management/basic-account-settings @@ -10,5 +10,7 @@ mapTopic: true versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- diff --git a/content/admin/user-management/migrating-data-to-and-from-your-enterprise.md b/content/admin/user-management/migrating-data-to-and-from-your-enterprise.md index a3df463ac3..216d8e3aa4 100644 --- a/content/admin/user-management/migrating-data-to-and-from-your-enterprise.md +++ b/content/admin/user-management/migrating-data-to-and-from-your-enterprise.md @@ -9,5 +9,7 @@ redirect_from: - /enterprise/admin/user-management/migrating-data-to-and-from-your-enterprise versions: enterprise-server: '*' +topics: + - enterprise --- diff --git a/content/admin/user-management/migrating-data-to-your-enterprise.md b/content/admin/user-management/migrating-data-to-your-enterprise.md index e1a120ba63..47abddf047 100644 --- a/content/admin/user-management/migrating-data-to-your-enterprise.md +++ b/content/admin/user-management/migrating-data-to-your-enterprise.md @@ -13,6 +13,8 @@ redirect_from: - /enterprise/admin/user-management/migrating-data-to-your-enterprise versions: enterprise-server: '*' +topics: + - enterprise --- ### Applying the imported data on {% data variables.product.prodname_ghe_server %} diff --git a/content/admin/user-management/migrating-to-internal-repositories.md b/content/admin/user-management/migrating-to-internal-repositories.md index 509a9e1a11..c3abc3d40b 100644 --- a/content/admin/user-management/migrating-to-internal-repositories.md +++ b/content/admin/user-management/migrating-to-internal-repositories.md @@ -7,6 +7,8 @@ redirect_from: permissions: Site administrators can migrate to internal repositories. versions: enterprise-server: '>=2.20' +topics: + - enterprise --- ### About internal repositories diff --git a/content/admin/user-management/monitoring-activity-in-your-enterprise.md b/content/admin/user-management/monitoring-activity-in-your-enterprise.md index a72fde4deb..4c8ae9bd38 100644 --- a/content/admin/user-management/monitoring-activity-in-your-enterprise.md +++ b/content/admin/user-management/monitoring-activity-in-your-enterprise.md @@ -7,5 +7,7 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- diff --git a/content/admin/user-management/placing-a-legal-hold-on-a-user-or-organization.md b/content/admin/user-management/placing-a-legal-hold-on-a-user-or-organization.md index 20a81d080e..881f91d4b9 100644 --- a/content/admin/user-management/placing-a-legal-hold-on-a-user-or-organization.md +++ b/content/admin/user-management/placing-a-legal-hold-on-a-user-or-organization.md @@ -1,11 +1,13 @@ --- title: Placing a legal hold on a user or organization -intro: 'You can place a legal hold on a user or organization to ensure that repositories they own cannot be permanently removed from your enterprise.' +intro: You can place a legal hold on a user or organization to ensure that repositories they own cannot be permanently removed from your enterprise. redirect_from: - /enterprise/admin/user-management/placing-a-legal-hold-on-a-user-or-organization versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- Usually, if someone deletes a repository, it will be available on disk for 90 days and can be restored via the site admin dashboard. After 90 days the repository is purged and deleted forever. If you place a legal hold on a user or organization, repositories they own are available for restore indefinitely. diff --git a/content/admin/user-management/preparing-to-migrate-data-to-your-enterprise.md b/content/admin/user-management/preparing-to-migrate-data-to-your-enterprise.md index c6e85b46cc..b0b294e4ce 100644 --- a/content/admin/user-management/preparing-to-migrate-data-to-your-enterprise.md +++ b/content/admin/user-management/preparing-to-migrate-data-to-your-enterprise.md @@ -10,6 +10,8 @@ redirect_from: - /enterprise/admin/user-management/preparing-to-migrate-data-to-your-enterprise versions: enterprise-server: '*' +topics: + - enterprise --- ### Preparing the migrated data for import to {% data variables.product.prodname_ghe_server %} diff --git a/content/admin/user-management/preventing-users-from-creating-organizations.md b/content/admin/user-management/preventing-users-from-creating-organizations.md index 1a1f09c776..41355830c4 100644 --- a/content/admin/user-management/preventing-users-from-creating-organizations.md +++ b/content/admin/user-management/preventing-users-from-creating-organizations.md @@ -4,10 +4,12 @@ redirect_from: - /enterprise/admin/articles/preventing-users-from-creating-organizations/ - /enterprise/admin/hidden/preventing-users-from-creating-organizations/ - /enterprise/admin/user-management/preventing-users-from-creating-organizations -intro: 'You can prevent users from creating organizations in your enterprise.' +intro: You can prevent users from creating organizations in your enterprise. versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- {% data reusables.enterprise-accounts.access-enterprise %} diff --git a/content/admin/user-management/promoting-or-demoting-a-site-administrator.md b/content/admin/user-management/promoting-or-demoting-a-site-administrator.md index 8370cad870..225c8efd4b 100644 --- a/content/admin/user-management/promoting-or-demoting-a-site-administrator.md +++ b/content/admin/user-management/promoting-or-demoting-a-site-administrator.md @@ -7,6 +7,8 @@ redirect_from: intro: 'Site administrators can promote any normal user account to a site administrator, as well as demote other site administrators to regular users.' versions: enterprise-server: '*' +topics: + - enterprise --- {% tip %} @@ -52,4 +54,4 @@ For information about promoting a user to an organization owner, see the `ghe-or 2. Run [ghe-user-demote](/enterprise/{{ currentVersion }}/admin/guides/installation/command-line-utilities#ghe-user-demote) with the username to demote. ```shell $ ghe-user-demote username - ``` \ No newline at end of file + ``` diff --git a/content/admin/user-management/rebuilding-contributions-data.md b/content/admin/user-management/rebuilding-contributions-data.md index 12b6e32f28..8ad18007f0 100644 --- a/content/admin/user-management/rebuilding-contributions-data.md +++ b/content/admin/user-management/rebuilding-contributions-data.md @@ -6,6 +6,8 @@ redirect_from: - /enterprise/admin/user-management/rebuilding-contributions-data versions: enterprise-server: '*' +topics: + - enterprise --- Whenever a commit is pushed to {% data variables.product.prodname_enterprise %}, it is linked to a user account if they are both associated with the same email address. However, existing commits are *not* retroactively linked when a user registers a new email address or creates a new account. diff --git a/content/admin/user-management/removing-users-from-teams-and-organizations.md b/content/admin/user-management/removing-users-from-teams-and-organizations.md index 3887587f90..2d4d6eace6 100644 --- a/content/admin/user-management/removing-users-from-teams-and-organizations.md +++ b/content/admin/user-management/removing-users-from-teams-and-organizations.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/user-management/removing-users-from-teams-and-organizations versions: enterprise-server: '*' +topics: + - enterprise --- Only owners or team admins can remove organization members. When a user is removed from a team or organization, their issues, pull requests, and comments in the organization's repositories remain intact and are still attributed to the user. diff --git a/content/admin/user-management/requiring-two-factor-authentication-for-an-organization.md b/content/admin/user-management/requiring-two-factor-authentication-for-an-organization.md index 32cff3f262..a60123ce08 100644 --- a/content/admin/user-management/requiring-two-factor-authentication-for-an-organization.md +++ b/content/admin/user-management/requiring-two-factor-authentication-for-an-organization.md @@ -5,6 +5,8 @@ redirect_from: - /enterprise/admin/user-management/requiring-two-factor-authentication-for-an-organization versions: enterprise-server: '*' +topics: + - enterprise --- When using LDAP or built-in authentication, two-factor authentication is supported on {% data variables.product.product_location %}. Organization administrators can require members to have two-factor authentication enabled. diff --git a/content/admin/user-management/searching-the-audit-log.md b/content/admin/user-management/searching-the-audit-log.md index 9495d0dc5c..aa9caf2db5 100644 --- a/content/admin/user-management/searching-the-audit-log.md +++ b/content/admin/user-management/searching-the-audit-log.md @@ -1,6 +1,6 @@ --- title: Searching the audit log -intro: 'Site administrators can search an extensive list of audited actions on the enterprise.' +intro: Site administrators can search an extensive list of audited actions on the enterprise. redirect_from: - /enterprise/admin/articles/searching-the-audit-log/ - /enterprise/admin/installation/searching-the-audit-log @@ -8,6 +8,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### Search query syntax diff --git a/content/admin/user-management/suspending-and-unsuspending-users.md b/content/admin/user-management/suspending-and-unsuspending-users.md index ce82b3bb93..ba313b6765 100644 --- a/content/admin/user-management/suspending-and-unsuspending-users.md +++ b/content/admin/user-management/suspending-and-unsuspending-users.md @@ -10,6 +10,8 @@ redirect_from: intro: 'If a user leaves or moves to a different part of the company, you should remove or modify their ability to access {% data variables.product.product_location %}.' versions: enterprise-server: '*' +topics: + - enterprise --- If employees leave the company, you can suspend their {% data variables.product.prodname_ghe_server %} accounts to open up user licenses in your {% data variables.product.prodname_enterprise %} license while preserving the issues, comments, repositories, gists, and other data they created. Suspended users cannot sign into your instance, nor can they push or pull code. @@ -92,4 +94,4 @@ You can create a custom message that suspended users will see when attempting to ``` ### Further reading -- "[Suspend a user](/rest/reference/enterprise-admin#suspend-a-user)" \ No newline at end of file +- "[Suspend a user](/rest/reference/enterprise-admin#suspend-a-user)" diff --git a/content/admin/user-management/troubleshooting-service-hooks.md b/content/admin/user-management/troubleshooting-service-hooks.md index 3ae71bf810..f7e8ea77c0 100644 --- a/content/admin/user-management/troubleshooting-service-hooks.md +++ b/content/admin/user-management/troubleshooting-service-hooks.md @@ -8,6 +8,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- ### Getting information on deliveries diff --git a/content/admin/user-management/viewing-push-logs.md b/content/admin/user-management/viewing-push-logs.md index 19fb572493..3481540a90 100644 --- a/content/admin/user-management/viewing-push-logs.md +++ b/content/admin/user-management/viewing-push-logs.md @@ -1,6 +1,6 @@ --- title: Viewing push logs -intro: 'Site administrators can view a list of Git push operations for any repository on the enterprise.' +intro: Site administrators can view a list of Git push operations for any repository on the enterprise. redirect_from: - /enterprise/admin/articles/viewing-push-logs/ - /enterprise/admin/installation/viewing-push-logs @@ -8,6 +8,8 @@ redirect_from: versions: enterprise-server: '*' github-ae: '*' +topics: + - enterprise --- Push log entries show: @@ -38,4 +40,4 @@ Push log entries show: ```shell ghe-repo owner/repository -c "less audit_log" ``` -{% endif %} \ No newline at end of file +{% endif %} diff --git a/content/developers/apps/about-apps.md b/content/developers/apps/about-apps.md index fff85efbab..e1c19c1da5 100644 --- a/content/developers/apps/about-apps.md +++ b/content/developers/apps/about-apps.md @@ -10,6 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- Apps on {% data variables.product.prodname_dotcom %} allow you to automate and improve your workflow. You can build apps to improve your workflow.{% if currentVersion == "free-pro-team@latest" %} You can also share or sell apps in [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace). To learn how to list an app on {% data variables.product.prodname_marketplace %}, see "[Getting started with GitHub Marketplace](/marketplace/getting-started/)."{% endif %} diff --git a/content/developers/apps/activating-optional-features-for-apps.md b/content/developers/apps/activating-optional-features-for-apps.md index ef5f534d5b..79ef3adf87 100644 --- a/content/developers/apps/activating-optional-features-for-apps.md +++ b/content/developers/apps/activating-optional-features-for-apps.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' github-ae: '*' enterprise-server: '>=2.22' +topics: + - github apps --- {% warning %} diff --git a/content/developers/apps/authenticating-with-github-apps.md b/content/developers/apps/authenticating-with-github-apps.md index c4d09073ff..46ab929b32 100644 --- a/content/developers/apps/authenticating-with-github-apps.md +++ b/content/developers/apps/authenticating-with-github-apps.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- {% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} diff --git a/content/developers/apps/authorizing-oauth-apps.md b/content/developers/apps/authorizing-oauth-apps.md index 4a9ab098cc..cbf94e9bae 100644 --- a/content/developers/apps/authorizing-oauth-apps.md +++ b/content/developers/apps/authorizing-oauth-apps.md @@ -12,6 +12,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - oauth apps --- {% data variables.product.product_name %}'s OAuth implementation supports the standard [authorization code grant type](https://tools.ietf.org/html/rfc6749#section-4.1){% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" or currentVersion == "github-ae@latest" %} and the OAuth 2.0 [Device Authorization Grant](https://tools.ietf.org/html/rfc8628) for apps that don't have access to a web browser{% endif %}. diff --git a/content/developers/apps/building-github-apps.md b/content/developers/apps/building-github-apps.md index 91bb4479af..8c79f00995 100644 --- a/content/developers/apps/building-github-apps.md +++ b/content/developers/apps/building-github-apps.md @@ -9,5 +9,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/building-oauth-apps.md b/content/developers/apps/building-oauth-apps.md index ccedbd6267..16fbbbf523 100644 --- a/content/developers/apps/building-oauth-apps.md +++ b/content/developers/apps/building-oauth-apps.md @@ -9,5 +9,6 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - oauth apps --- - diff --git a/content/developers/apps/creating-a-custom-badge-for-your-github-app.md b/content/developers/apps/creating-a-custom-badge-for-your-github-app.md index c39b720c26..2f26017f1c 100644 --- a/content/developers/apps/creating-a-custom-badge-for-your-github-app.md +++ b/content/developers/apps/creating-a-custom-badge-for-your-github-app.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- By default, a new GitHub App will have an automatically generated [identicon](https://github.com/blog/1586-identicons). diff --git a/content/developers/apps/creating-a-custom-badge-for-your-oauth-app.md b/content/developers/apps/creating-a-custom-badge-for-your-oauth-app.md index 9945833d00..f39207563e 100644 --- a/content/developers/apps/creating-a-custom-badge-for-your-oauth-app.md +++ b/content/developers/apps/creating-a-custom-badge-for-your-oauth-app.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - oauth apps --- By default, a new OAuth App will have an automatically generated [identicon](https://github.com/blog/1586-identicons). diff --git a/content/developers/apps/creating-a-github-app-from-a-manifest.md b/content/developers/apps/creating-a-github-app-from-a-manifest.md index 7c18a8b460..22c65eacfa 100644 --- a/content/developers/apps/creating-a-github-app-from-a-manifest.md +++ b/content/developers/apps/creating-a-github-app-from-a-manifest.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/creating-a-github-app-using-url-parameters.md b/content/developers/apps/creating-a-github-app-using-url-parameters.md index 99d0f03a93..a4794039ea 100644 --- a/content/developers/apps/creating-a-github-app-using-url-parameters.md +++ b/content/developers/apps/creating-a-github-app-using-url-parameters.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/creating-a-github-app.md b/content/developers/apps/creating-a-github-app.md index cae49a410a..63b95c7eae 100644 --- a/content/developers/apps/creating-a-github-app.md +++ b/content/developers/apps/creating-a-github-app.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- {% if currentVersion == "free-pro-team@latest" %}To learn how to use GitHub App Manifests, which allow people to create preconfigured GitHub Apps, see "[Creating GitHub Apps from a manifest](/apps/building-github-apps/creating-github-apps-from-a-manifest/)."{% endif %} diff --git a/content/developers/apps/creating-an-oauth-app.md b/content/developers/apps/creating-an-oauth-app.md index c885dc2134..0340b236ef 100644 --- a/content/developers/apps/creating-an-oauth-app.md +++ b/content/developers/apps/creating-an-oauth-app.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - oauth apps --- {% if currentVersion == "free-pro-team@latest" %} diff --git a/content/developers/apps/creating-ci-tests-with-the-checks-api.md b/content/developers/apps/creating-ci-tests-with-the-checks-api.md index e964e7b055..8d8bd1e520 100644 --- a/content/developers/apps/creating-ci-tests-with-the-checks-api.md +++ b/content/developers/apps/creating-ci-tests-with-the-checks-api.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/deleting-a-github-app.md b/content/developers/apps/deleting-a-github-app.md index 6c32b8f7f9..7c40c0b61d 100644 --- a/content/developers/apps/deleting-a-github-app.md +++ b/content/developers/apps/deleting-a-github-app.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- {% data reusables.user-settings.access_settings %} diff --git a/content/developers/apps/deleting-an-oauth-app.md b/content/developers/apps/deleting-an-oauth-app.md index cdf87e56e0..75eb74ad1a 100644 --- a/content/developers/apps/deleting-an-oauth-app.md +++ b/content/developers/apps/deleting-an-oauth-app.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - oauth apps --- {% data reusables.user-settings.access_settings %} diff --git a/content/developers/apps/differences-between-github-apps-and-oauth-apps.md b/content/developers/apps/differences-between-github-apps-and-oauth-apps.md index 091642a8f7..c1c8b1c125 100644 --- a/content/developers/apps/differences-between-github-apps-and-oauth-apps.md +++ b/content/developers/apps/differences-between-github-apps-and-oauth-apps.md @@ -9,6 +9,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps + - oauth apps --- ### Who can install GitHub Apps and authorize OAuth Apps? diff --git a/content/developers/apps/editing-a-github-apps-permissions.md b/content/developers/apps/editing-a-github-apps-permissions.md index d57db219a1..62ec4ae5c0 100644 --- a/content/developers/apps/editing-a-github-apps-permissions.md +++ b/content/developers/apps/editing-a-github-apps-permissions.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- {% note %} diff --git a/content/developers/apps/getting-started-with-apps.md b/content/developers/apps/getting-started-with-apps.md index d6bc3d7a0f..46aa599b97 100644 --- a/content/developers/apps/getting-started-with-apps.md +++ b/content/developers/apps/getting-started-with-apps.md @@ -6,5 +6,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/guides.md b/content/developers/apps/guides.md index 1e90f02406..125c0f5c42 100644 --- a/content/developers/apps/guides.md +++ b/content/developers/apps/guides.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/identifying-and-authorizing-users-for-github-apps.md b/content/developers/apps/identifying-and-authorizing-users-for-github-apps.md index 0c27bda883..6f235d3ca0 100644 --- a/content/developers/apps/identifying-and-authorizing-users-for-github-apps.md +++ b/content/developers/apps/identifying-and-authorizing-users-for-github-apps.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/index.md b/content/developers/apps/index.md index e384433f90..5dab758c53 100644 --- a/content/developers/apps/index.md +++ b/content/developers/apps/index.md @@ -13,6 +13,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- {% topic_link_in_list /getting-started-with-apps %} diff --git a/content/developers/apps/installing-github-apps.md b/content/developers/apps/installing-github-apps.md index c997ded78a..59215beea0 100644 --- a/content/developers/apps/installing-github-apps.md +++ b/content/developers/apps/installing-github-apps.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- {% note %} diff --git a/content/developers/apps/making-a-github-app-public-or-private.md b/content/developers/apps/making-a-github-app-public-or-private.md index 036d3d589d..37f0bee15c 100644 --- a/content/developers/apps/making-a-github-app-public-or-private.md +++ b/content/developers/apps/making-a-github-app-public-or-private.md @@ -11,6 +11,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- For authentication information, see "[Authenticating with GitHub Apps](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation)." diff --git a/content/developers/apps/managing-github-apps.md b/content/developers/apps/managing-github-apps.md index fb3b9c3934..0bab3a14a5 100644 --- a/content/developers/apps/managing-github-apps.md +++ b/content/developers/apps/managing-github-apps.md @@ -9,5 +9,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/managing-oauth-apps.md b/content/developers/apps/managing-oauth-apps.md index e1bf769ded..18cb006f91 100644 --- a/content/developers/apps/managing-oauth-apps.md +++ b/content/developers/apps/managing-oauth-apps.md @@ -9,5 +9,6 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - oauth apps --- - diff --git a/content/developers/apps/migrating-oauth-apps-to-github-apps.md b/content/developers/apps/migrating-oauth-apps-to-github-apps.md index 21fbe532f2..eedbac7a4c 100644 --- a/content/developers/apps/migrating-oauth-apps-to-github-apps.md +++ b/content/developers/apps/migrating-oauth-apps-to-github-apps.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/modifying-a-github-app.md b/content/developers/apps/modifying-a-github-app.md index 47392e13f0..39278961f9 100644 --- a/content/developers/apps/modifying-a-github-app.md +++ b/content/developers/apps/modifying-a-github-app.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- {% data reusables.user-settings.access_settings %} diff --git a/content/developers/apps/modifying-an-oauth-app.md b/content/developers/apps/modifying-an-oauth-app.md index 73beec3337..7b15a86e19 100644 --- a/content/developers/apps/modifying-an-oauth-app.md +++ b/content/developers/apps/modifying-an-oauth-app.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - oauth apps --- {% data reusables.user-settings.access_settings %} diff --git a/content/developers/apps/rate-limits-for-github-apps.md b/content/developers/apps/rate-limits-for-github-apps.md index 31607e2e14..2451916675 100644 --- a/content/developers/apps/rate-limits-for-github-apps.md +++ b/content/developers/apps/rate-limits-for-github-apps.md @@ -10,6 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- ### Server-to-server requests diff --git a/content/developers/apps/refreshing-user-to-server-access-tokens.md b/content/developers/apps/refreshing-user-to-server-access-tokens.md index 3a21601f34..ca66b82b31 100644 --- a/content/developers/apps/refreshing-user-to-server-access-tokens.md +++ b/content/developers/apps/refreshing-user-to-server-access-tokens.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/scopes-for-oauth-apps.md b/content/developers/apps/scopes-for-oauth-apps.md index 366efeb18b..db6e245649 100644 --- a/content/developers/apps/scopes-for-oauth-apps.md +++ b/content/developers/apps/scopes-for-oauth-apps.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - oauth apps --- When setting up an OAuth App on GitHub, requested scopes are displayed to the user on the authorization form. diff --git a/content/developers/apps/setting-permissions-for-github-apps.md b/content/developers/apps/setting-permissions-for-github-apps.md index 547f445758..4d9c1fb557 100644 --- a/content/developers/apps/setting-permissions-for-github-apps.md +++ b/content/developers/apps/setting-permissions-for-github-apps.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- GitHub Apps don't have any permissions by default. When you create a GitHub App, you can select the permissions it needs to access end user data. Permissions can also be added and removed. For more information, see "[Editing a GitHub App's permissions](/apps/managing-github-apps/editing-a-github-app-s-permissions/)." diff --git a/content/developers/apps/setting-up-your-development-environment-to-create-a-github-app.md b/content/developers/apps/setting-up-your-development-environment-to-create-a-github-app.md index 3a35ecc6da..6e4d57a597 100644 --- a/content/developers/apps/setting-up-your-development-environment-to-create-a-github-app.md +++ b/content/developers/apps/setting-up-your-development-environment-to-create-a-github-app.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/apps/suspending-a-github-app-installation.md b/content/developers/apps/suspending-a-github-app-installation.md index 8ec4ca2e06..a619a27810 100644 --- a/content/developers/apps/suspending-a-github-app-installation.md +++ b/content/developers/apps/suspending-a-github-app-installation.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - github apps --- ### Suspending a GitHub App diff --git a/content/developers/apps/transferring-ownership-of-a-github-app.md b/content/developers/apps/transferring-ownership-of-a-github-app.md index 118908599d..0d9f093edf 100644 --- a/content/developers/apps/transferring-ownership-of-a-github-app.md +++ b/content/developers/apps/transferring-ownership-of-a-github-app.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- {% data reusables.user-settings.access_settings %} diff --git a/content/developers/apps/transferring-ownership-of-an-oauth-app.md b/content/developers/apps/transferring-ownership-of-an-oauth-app.md index 59d1b1adc3..023d8477dd 100644 --- a/content/developers/apps/transferring-ownership-of-an-oauth-app.md +++ b/content/developers/apps/transferring-ownership-of-an-oauth-app.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - oauth apps --- {% data reusables.user-settings.access_settings %} diff --git a/content/developers/apps/troubleshooting-authorization-request-errors.md b/content/developers/apps/troubleshooting-authorization-request-errors.md index 4620a4aa35..aed485cc2b 100644 --- a/content/developers/apps/troubleshooting-authorization-request-errors.md +++ b/content/developers/apps/troubleshooting-authorization-request-errors.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- ### Application suspended diff --git a/content/developers/apps/troubleshooting-oauth-app-access-token-request-errors.md b/content/developers/apps/troubleshooting-oauth-app-access-token-request-errors.md index c6b54ed2b2..af14d42307 100644 --- a/content/developers/apps/troubleshooting-oauth-app-access-token-request-errors.md +++ b/content/developers/apps/troubleshooting-oauth-app-access-token-request-errors.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - oauth apps --- {% note %} diff --git a/content/developers/apps/using-content-attachments.md b/content/developers/apps/using-content-attachments.md index ed9e9fde07..8fc9225435 100644 --- a/content/developers/apps/using-content-attachments.md +++ b/content/developers/apps/using-content-attachments.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- {% data reusables.pre-release-program.content-attachments-public-beta %} diff --git a/content/developers/apps/using-the-github-api-in-your-app.md b/content/developers/apps/using-the-github-api-in-your-app.md index ebd8e6ed71..d128429499 100644 --- a/content/developers/apps/using-the-github-api-in-your-app.md +++ b/content/developers/apps/using-the-github-api-in-your-app.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - github apps --- diff --git a/content/developers/github-marketplace/about-github-marketplace.md b/content/developers/github-marketplace/about-github-marketplace.md index a5566fb012..cc3ca5561e 100644 --- a/content/developers/github-marketplace/about-github-marketplace.md +++ b/content/developers/github-marketplace/about-github-marketplace.md @@ -6,6 +6,8 @@ redirect_from: - /marketplace/getting-started versions: free-pro-team: '*' +topics: + - marketplace --- [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace) connects you to developers who want to extend and improve their {% data variables.product.prodname_dotcom %} workflows. You can list free and paid tools for developers to use in {% data variables.product.prodname_marketplace %}. {% data variables.product.prodname_marketplace %} offers developers two types of tools: {% data variables.product.prodname_actions %} and Apps, and each tool requires different steps for adding it to {% data variables.product.prodname_marketplace %}. diff --git a/content/developers/github-marketplace/applying-for-publisher-verification-for-your-organization.md b/content/developers/github-marketplace/applying-for-publisher-verification-for-your-organization.md index 8919eee16e..f6c6257f9d 100644 --- a/content/developers/github-marketplace/applying-for-publisher-verification-for-your-organization.md +++ b/content/developers/github-marketplace/applying-for-publisher-verification-for-your-organization.md @@ -3,6 +3,8 @@ title: Applying for publisher verification for your organization intro: 'To offer paid plans for your app or to include a marketplace badge in your app listing, you must complete the publisher verification process for your organization.' versions: free-pro-team: '*' +topics: + - marketplace --- Publisher verification ensures that {% data variables.product.prodname_dotcom %} has a way to contact you, that you've enabled two-factor authentication for your organization, and that your organization's domain has been verified. diff --git a/content/developers/github-marketplace/billing-customers.md b/content/developers/github-marketplace/billing-customers.md index ed6701d671..2e578e1458 100644 --- a/content/developers/github-marketplace/billing-customers.md +++ b/content/developers/github-marketplace/billing-customers.md @@ -7,6 +7,8 @@ redirect_from: - /marketplace/selling-your-app/billing-customers-in-github-marketplace versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/configuring-a-webhook-to-notify-you-of-plan-changes.md b/content/developers/github-marketplace/configuring-a-webhook-to-notify-you-of-plan-changes.md index 6ed97feecd..00e34854f1 100644 --- a/content/developers/github-marketplace/configuring-a-webhook-to-notify-you-of-plan-changes.md +++ b/content/developers/github-marketplace/configuring-a-webhook-to-notify-you-of-plan-changes.md @@ -9,6 +9,8 @@ redirect_from: - /marketplace/listing-on-github-marketplace/configuring-the-github-marketplace-webhook versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/creating-apps-for-github-marketplace.md b/content/developers/github-marketplace/creating-apps-for-github-marketplace.md index 342754e94d..1db26ad8f2 100644 --- a/content/developers/github-marketplace/creating-apps-for-github-marketplace.md +++ b/content/developers/github-marketplace/creating-apps-for-github-marketplace.md @@ -4,5 +4,7 @@ intro: 'You can list free and paid tools for developers to use in {% data variab mapTopic: true versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/customer-experience-best-practices-for-apps.md b/content/developers/github-marketplace/customer-experience-best-practices-for-apps.md index 4107fa4427..b739663a7d 100644 --- a/content/developers/github-marketplace/customer-experience-best-practices-for-apps.md +++ b/content/developers/github-marketplace/customer-experience-best-practices-for-apps.md @@ -1,9 +1,11 @@ --- title: Customer experience best practices for apps -intro: 'Guidelines for creating an app that will be easy to use and understand.' +intro: Guidelines for creating an app that will be easy to use and understand. shortTitle: Customer experience best practice versions: free-pro-team: '*' +topics: + - marketplace --- If you follow these best practices it will help you to provide a good customer experience. diff --git a/content/developers/github-marketplace/drafting-a-listing-for-your-app.md b/content/developers/github-marketplace/drafting-a-listing-for-your-app.md index c495928b43..85fcb55cc2 100644 --- a/content/developers/github-marketplace/drafting-a-listing-for-your-app.md +++ b/content/developers/github-marketplace/drafting-a-listing-for-your-app.md @@ -14,6 +14,8 @@ redirect_from: - /marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/handling-new-purchases-and-free-trials.md b/content/developers/github-marketplace/handling-new-purchases-and-free-trials.md index 94b29c63ff..0809b8196c 100644 --- a/content/developers/github-marketplace/handling-new-purchases-and-free-trials.md +++ b/content/developers/github-marketplace/handling-new-purchases-and-free-trials.md @@ -8,6 +8,8 @@ redirect_from: - /marketplace/integrating-with-the-github-marketplace-api/handling-new-purchases-and-free-trials versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/handling-plan-cancellations.md b/content/developers/github-marketplace/handling-plan-cancellations.md index ed287efb5e..2334e0fe9a 100644 --- a/content/developers/github-marketplace/handling-plan-cancellations.md +++ b/content/developers/github-marketplace/handling-plan-cancellations.md @@ -7,6 +7,8 @@ redirect_from: - /marketplace/integrating-with-the-github-marketplace-api/cancelling-plans versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/handling-plan-changes.md b/content/developers/github-marketplace/handling-plan-changes.md index 7fb64dd96c..a567ed24d9 100644 --- a/content/developers/github-marketplace/handling-plan-changes.md +++ b/content/developers/github-marketplace/handling-plan-changes.md @@ -7,6 +7,8 @@ redirect_from: - /marketplace/integrating-with-the-github-marketplace-api/upgrading-and-downgrading-plans versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/index.md b/content/developers/github-marketplace/index.md index 9d018cfe81..96571894ae 100644 --- a/content/developers/github-marketplace/index.md +++ b/content/developers/github-marketplace/index.md @@ -7,6 +7,8 @@ redirect_from: - /marketplace versions: free-pro-team: '*' +topics: + - marketplace --- {% topic_link_in_list /github-marketplace-overview %} diff --git a/content/developers/github-marketplace/listing-an-app-on-github-marketplace.md b/content/developers/github-marketplace/listing-an-app-on-github-marketplace.md index 58924a15d0..cfe604c53e 100644 --- a/content/developers/github-marketplace/listing-an-app-on-github-marketplace.md +++ b/content/developers/github-marketplace/listing-an-app-on-github-marketplace.md @@ -13,5 +13,7 @@ redirect_from: - /marketplace/listing-on-github-marketplace versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/pricing-plans-for-github-marketplace-apps.md b/content/developers/github-marketplace/pricing-plans-for-github-marketplace-apps.md index 8e76577810..33e7aeeccc 100644 --- a/content/developers/github-marketplace/pricing-plans-for-github-marketplace-apps.md +++ b/content/developers/github-marketplace/pricing-plans-for-github-marketplace-apps.md @@ -6,6 +6,8 @@ redirect_from: - /marketplace/selling-your-app/github-marketplace-pricing-plans versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/receiving-payment-for-app-purchases.md b/content/developers/github-marketplace/receiving-payment-for-app-purchases.md index 0264e77e2e..85bb104042 100644 --- a/content/developers/github-marketplace/receiving-payment-for-app-purchases.md +++ b/content/developers/github-marketplace/receiving-payment-for-app-purchases.md @@ -9,6 +9,8 @@ redirect_from: - /marketplace/selling-your-app/receiving-payment-for-github-marketplace-listings versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/requirements-for-listing-an-app.md b/content/developers/github-marketplace/requirements-for-listing-an-app.md index 3a2a3d1be3..05213fa2b8 100644 --- a/content/developers/github-marketplace/requirements-for-listing-an-app.md +++ b/content/developers/github-marketplace/requirements-for-listing-an-app.md @@ -10,6 +10,8 @@ redirect_from: - /marketplace/getting-started/requirements-for-listing-an-app-on-github-marketplace versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/rest-endpoints-for-the-github-marketplace-api.md b/content/developers/github-marketplace/rest-endpoints-for-the-github-marketplace-api.md index db3482b992..09ae762f88 100644 --- a/content/developers/github-marketplace/rest-endpoints-for-the-github-marketplace-api.md +++ b/content/developers/github-marketplace/rest-endpoints-for-the-github-marketplace-api.md @@ -7,6 +7,8 @@ redirect_from: - /marketplace/integrating-with-the-github-marketplace-api/github-marketplace-rest-api-endpoints versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/security-best-practices-for-apps.md b/content/developers/github-marketplace/security-best-practices-for-apps.md index fac3d2fcf6..b8be78bbfa 100644 --- a/content/developers/github-marketplace/security-best-practices-for-apps.md +++ b/content/developers/github-marketplace/security-best-practices-for-apps.md @@ -8,6 +8,8 @@ redirect_from: shortTitle: Security best practice versions: free-pro-team: '*' +topics: + - marketplace --- If you follow these best practices it will help you to provide a secure user experience. diff --git a/content/developers/github-marketplace/selling-your-app-on-github-marketplace.md b/content/developers/github-marketplace/selling-your-app-on-github-marketplace.md index e468593f58..5b643723ff 100644 --- a/content/developers/github-marketplace/selling-your-app-on-github-marketplace.md +++ b/content/developers/github-marketplace/selling-your-app-on-github-marketplace.md @@ -11,5 +11,7 @@ redirect_from: - /marketplace/selling-your-app versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/setting-pricing-plans-for-your-listing.md b/content/developers/github-marketplace/setting-pricing-plans-for-your-listing.md index 14fb5e0e67..7b7f3014d4 100644 --- a/content/developers/github-marketplace/setting-pricing-plans-for-your-listing.md +++ b/content/developers/github-marketplace/setting-pricing-plans-for-your-listing.md @@ -15,6 +15,8 @@ redirect_from: - /marketplace/listing-on-github-marketplace/setting-a-github-marketplace-listing-s-pricing-plan versions: free-pro-team: '*' +topics: + - marketplace --- ### About setting pricing plans diff --git a/content/developers/github-marketplace/submitting-your-listing-for-publication.md b/content/developers/github-marketplace/submitting-your-listing-for-publication.md index f56182b6ba..eba474e22e 100644 --- a/content/developers/github-marketplace/submitting-your-listing-for-publication.md +++ b/content/developers/github-marketplace/submitting-your-listing-for-publication.md @@ -6,6 +6,8 @@ redirect_from: - /developers/github-marketplace/submitting-your-listing-for-review versions: free-pro-team: '*' +topics: + - marketplace --- Once your app listing meets the {% data variables.product.prodname_marketplace %} requirements, you can submit your app. For an overview of the app listing requirements, see "[Requirements for listing an app](/developers/github-marketplace/requirements-for-listing-an-app)." diff --git a/content/developers/github-marketplace/testing-your-app.md b/content/developers/github-marketplace/testing-your-app.md index 577b6d624a..e587a94908 100644 --- a/content/developers/github-marketplace/testing-your-app.md +++ b/content/developers/github-marketplace/testing-your-app.md @@ -7,6 +7,8 @@ redirect_from: - /marketplace/integrating-with-the-github-marketplace-api/testing-github-marketplace-apps versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app.md b/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app.md index 79b8ccfe43..6846363051 100644 --- a/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app.md +++ b/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app.md @@ -8,5 +8,7 @@ redirect_from: - /marketplace/integrating-with-the-github-marketplace-api versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/viewing-metrics-for-your-listing.md b/content/developers/github-marketplace/viewing-metrics-for-your-listing.md index de49180466..3621b2e7b8 100644 --- a/content/developers/github-marketplace/viewing-metrics-for-your-listing.md +++ b/content/developers/github-marketplace/viewing-metrics-for-your-listing.md @@ -8,6 +8,8 @@ redirect_from: - /marketplace/github-marketplace-insights versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/viewing-transactions-for-your-listing.md b/content/developers/github-marketplace/viewing-transactions-for-your-listing.md index b0c801eaa0..60f69eafb4 100644 --- a/content/developers/github-marketplace/viewing-transactions-for-your-listing.md +++ b/content/developers/github-marketplace/viewing-transactions-for-your-listing.md @@ -5,6 +5,8 @@ redirect_from: - /marketplace/github-marketplace-transactions versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/webhook-events-for-the-github-marketplace-api.md b/content/developers/github-marketplace/webhook-events-for-the-github-marketplace-api.md index 96594bbc61..71772c127c 100644 --- a/content/developers/github-marketplace/webhook-events-for-the-github-marketplace-api.md +++ b/content/developers/github-marketplace/webhook-events-for-the-github-marketplace-api.md @@ -7,6 +7,8 @@ redirect_from: - /marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/github-marketplace/writing-a-listing-description-for-your-app.md b/content/developers/github-marketplace/writing-a-listing-description-for-your-app.md index 7dabc220bb..50544a871f 100644 --- a/content/developers/github-marketplace/writing-a-listing-description-for-your-app.md +++ b/content/developers/github-marketplace/writing-a-listing-description-for-your-app.md @@ -12,6 +12,8 @@ redirect_from: - /marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions versions: free-pro-team: '*' +topics: + - marketplace --- diff --git a/content/developers/overview/about-githubs-apis.md b/content/developers/overview/about-githubs-apis.md index e60baa72e3..7141a1ac74 100644 --- a/content/developers/overview/about-githubs-apis.md +++ b/content/developers/overview/about-githubs-apis.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - api --- There are two stable versions of the GitHub API: the [REST API](/rest) and the [GraphQL API](/graphql). When using the REST API, we encourage you to [request v3 via the `Accept` header](/v3/media/#request-specific-version). For information on using the GraphQL API, see the [v4 docs](/graphql). diff --git a/content/developers/overview/github-developer-program.md b/content/developers/overview/github-developer-program.md index 343241fd6f..947b290ce3 100644 --- a/content/developers/overview/github-developer-program.md +++ b/content/developers/overview/github-developer-program.md @@ -5,6 +5,8 @@ redirect_from: - /program versions: free-pro-team: '*' +topics: + - api --- Building an application that integrates with GitHub? Register for our Developer Program! The possibilities are endless, and you enjoy the kudos. [Register now](https://github.com/developer/register) diff --git a/content/developers/overview/managing-deploy-keys.md b/content/developers/overview/managing-deploy-keys.md index d97cec6391..ad419e8717 100644 --- a/content/developers/overview/managing-deploy-keys.md +++ b/content/developers/overview/managing-deploy-keys.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - api --- diff --git a/content/developers/overview/replacing-github-services.md b/content/developers/overview/replacing-github-services.md index 878a316bd5..05f75c5079 100644 --- a/content/developers/overview/replacing-github-services.md +++ b/content/developers/overview/replacing-github-services.md @@ -8,6 +8,8 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - api --- diff --git a/content/developers/overview/secret-scanning.md b/content/developers/overview/secret-scanning.md index 278f89e672..9c2d39bf94 100644 --- a/content/developers/overview/secret-scanning.md +++ b/content/developers/overview/secret-scanning.md @@ -7,6 +7,8 @@ redirect_from: - /partnerships/secret-scanning versions: free-pro-team: '*' +topics: + - api --- {% data variables.product.prodname_dotcom %} scans repositories for known secret formats to prevent fraudulent use of credentials that were committed accidentally. {% data variables.product.prodname_secret_scanning_caps %} happens by default on public repositories, and can be enabled on private repositories by repository administrators or organization owners. As a service provider, you can partner with {% data variables.product.prodname_dotcom %} so that your secret formats are included in our {% data variables.product.prodname_secret_scanning %}. diff --git a/content/developers/overview/using-ssh-agent-forwarding.md b/content/developers/overview/using-ssh-agent-forwarding.md index 81b5ffbd5f..dfa6e0efc4 100644 --- a/content/developers/overview/using-ssh-agent-forwarding.md +++ b/content/developers/overview/using-ssh-agent-forwarding.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - api --- diff --git a/content/developers/overview/viewing-deployment-history.md b/content/developers/overview/viewing-deployment-history.md index 05d8099b78..5d9f721581 100644 --- a/content/developers/overview/viewing-deployment-history.md +++ b/content/developers/overview/viewing-deployment-history.md @@ -5,6 +5,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - api --- {% data reusables.actions.environments-beta %} diff --git a/content/developers/webhooks-and-events/about-webhooks.md b/content/developers/webhooks-and-events/about-webhooks.md index 3123eb3183..1c4708f577 100644 --- a/content/developers/webhooks-and-events/about-webhooks.md +++ b/content/developers/webhooks-and-events/about-webhooks.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - webhooks --- diff --git a/content/developers/webhooks-and-events/configuring-your-server-to-receive-payloads.md b/content/developers/webhooks-and-events/configuring-your-server-to-receive-payloads.md index c4787dcc97..42464d48ef 100644 --- a/content/developers/webhooks-and-events/configuring-your-server-to-receive-payloads.md +++ b/content/developers/webhooks-and-events/configuring-your-server-to-receive-payloads.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - webhooks --- diff --git a/content/developers/webhooks-and-events/creating-webhooks.md b/content/developers/webhooks-and-events/creating-webhooks.md index 17d3ac7a24..ab6e95e7bb 100644 --- a/content/developers/webhooks-and-events/creating-webhooks.md +++ b/content/developers/webhooks-and-events/creating-webhooks.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - webhooks --- diff --git a/content/developers/webhooks-and-events/events.md b/content/developers/webhooks-and-events/events.md index 6fead511c2..761e6b2472 100644 --- a/content/developers/webhooks-and-events/events.md +++ b/content/developers/webhooks-and-events/events.md @@ -6,5 +6,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - events --- diff --git a/content/developers/webhooks-and-events/github-event-types.md b/content/developers/webhooks-and-events/github-event-types.md index 72098b42fa..74579398db 100644 --- a/content/developers/webhooks-and-events/github-event-types.md +++ b/content/developers/webhooks-and-events/github-event-types.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - events --- diff --git a/content/developers/webhooks-and-events/index.md b/content/developers/webhooks-and-events/index.md index 8fe5ba3cd8..e433da0403 100644 --- a/content/developers/webhooks-and-events/index.md +++ b/content/developers/webhooks-and-events/index.md @@ -5,6 +5,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - webhooks + - events --- ### Table of Contents diff --git a/content/developers/webhooks-and-events/issue-event-types.md b/content/developers/webhooks-and-events/issue-event-types.md index 9da44234bd..41380543d1 100644 --- a/content/developers/webhooks-and-events/issue-event-types.md +++ b/content/developers/webhooks-and-events/issue-event-types.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - events --- diff --git a/content/developers/webhooks-and-events/securing-your-webhooks.md b/content/developers/webhooks-and-events/securing-your-webhooks.md index c32343b777..cfdf4c9a1e 100644 --- a/content/developers/webhooks-and-events/securing-your-webhooks.md +++ b/content/developers/webhooks-and-events/securing-your-webhooks.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - webhooks --- diff --git a/content/developers/webhooks-and-events/testing-webhooks.md b/content/developers/webhooks-and-events/testing-webhooks.md index 3735773363..ba40fe2cb4 100644 --- a/content/developers/webhooks-and-events/testing-webhooks.md +++ b/content/developers/webhooks-and-events/testing-webhooks.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - webhooks --- diff --git a/content/developers/webhooks-and-events/webhook-events-and-payloads.md b/content/developers/webhooks-and-events/webhook-events-and-payloads.md index 2336205b85..1ceeba1939 100644 --- a/content/developers/webhooks-and-events/webhook-events-and-payloads.md +++ b/content/developers/webhooks-and-events/webhook-events-and-payloads.md @@ -10,6 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - webhooks --- diff --git a/content/developers/webhooks-and-events/webhooks.md b/content/developers/webhooks-and-events/webhooks.md index ce66413490..9a1347c894 100644 --- a/content/developers/webhooks-and-events/webhooks.md +++ b/content/developers/webhooks-and-events/webhooks.md @@ -6,5 +6,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - webhooks --- diff --git a/content/github/administering-a-repository/about-dependabot-version-updates.md b/content/github/administering-a-repository/about-dependabot-version-updates.md index 70156ab2c9..d96a8719f3 100644 --- a/content/github/administering-a-repository/about-dependabot-version-updates.md +++ b/content/github/administering-a-repository/about-dependabot-version-updates.md @@ -5,9 +5,10 @@ redirect_from: - /github/administering-a-repository/about-dependabot - /github/administering-a-repository/about-github-dependabot - /github/administering-a-repository/about-github-dependabot-version-updates - versions: free-pro-team: '*' +topics: + - repositories --- {% data reusables.dependabot.beta-note %} diff --git a/content/github/administering-a-repository/about-email-notifications-for-pushes-to-your-repository.md b/content/github/administering-a-repository/about-email-notifications-for-pushes-to-your-repository.md index 792bfec4bc..88b8fbb6d7 100644 --- a/content/github/administering-a-repository/about-email-notifications-for-pushes-to-your-repository.md +++ b/content/github/administering-a-repository/about-email-notifications-for-pushes-to-your-repository.md @@ -11,6 +11,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% data reusables.notifications.outbound_email_tip %} diff --git a/content/github/administering-a-repository/about-merge-methods-on-github.md b/content/github/administering-a-repository/about-merge-methods-on-github.md index d8928317a6..6533a3ec45 100644 --- a/content/github/administering-a-repository/about-merge-methods-on-github.md +++ b/content/github/administering-a-repository/about-merge-methods-on-github.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% data reusables.pull_requests.configure_pull_request_merges_intro %} You can enforce one type of merge method, such as commit squashing or rebasing, by only enabling the desired method for your repository. diff --git a/content/github/administering-a-repository/about-protected-branches.md b/content/github/administering-a-repository/about-protected-branches.md index c842929a11..1dc9ce75c3 100644 --- a/content/github/administering-a-repository/about-protected-branches.md +++ b/content/github/administering-a-repository/about-protected-branches.md @@ -19,6 +19,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### About branch protection rules diff --git a/content/github/administering-a-repository/about-releases.md b/content/github/administering-a-repository/about-releases.md index 81ade4c4b0..fc0699c303 100644 --- a/content/github/administering-a-repository/about-releases.md +++ b/content/github/administering-a-repository/about-releases.md @@ -11,6 +11,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### About releases diff --git a/content/github/administering-a-repository/about-secret-scanning.md b/content/github/administering-a-repository/about-secret-scanning.md index 8835b2c460..38696dfe50 100644 --- a/content/github/administering-a-repository/about-secret-scanning.md +++ b/content/github/administering-a-repository/about-secret-scanning.md @@ -10,6 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '>=3.0' github-ae: '*' +topics: + - repositories --- {% data reusables.secret-scanning.beta %} diff --git a/content/github/administering-a-repository/about-securing-your-repository.md b/content/github/administering-a-repository/about-securing-your-repository.md index e383cbb71e..a98f29f304 100644 --- a/content/github/administering-a-repository/about-securing-your-repository.md +++ b/content/github/administering-a-repository/about-securing-your-repository.md @@ -5,6 +5,8 @@ versions: free-pro-team: '*' enterprise-server: '>=3.0' github-ae: '*' +topics: + - repositories --- ### Setting up your repository securely diff --git a/content/github/administering-a-repository/automation-for-release-forms-with-query-parameters.md b/content/github/administering-a-repository/automation-for-release-forms-with-query-parameters.md index a24e1145b9..10e4011e88 100644 --- a/content/github/administering-a-repository/automation-for-release-forms-with-query-parameters.md +++ b/content/github/administering-a-repository/automation-for-release-forms-with-query-parameters.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- Query parameters are optional parts of a URL you can customize to share a specific web page view, such as search filter results, an issue template, or the release form page on {% data variables.product.prodname_dotcom %}. To create your own query parameters, you must match the key and value pair. diff --git a/content/github/administering-a-repository/changing-the-default-branch.md b/content/github/administering-a-repository/changing-the-default-branch.md index cefd27c271..f1f0f892bd 100644 --- a/content/github/administering-a-repository/changing-the-default-branch.md +++ b/content/github/administering-a-repository/changing-the-default-branch.md @@ -9,6 +9,8 @@ versions: redirect_from: - /github/administering-a-repository/setting-the-default-branch - /articles/setting-the-default-branch +topics: + - repositories --- ### About changing the default branch diff --git a/content/github/administering-a-repository/classifying-your-repository-with-topics.md b/content/github/administering-a-repository/classifying-your-repository-with-topics.md index a187c9313d..8918184c6b 100644 --- a/content/github/administering-a-repository/classifying-your-repository-with-topics.md +++ b/content/github/administering-a-repository/classifying-your-repository-with-topics.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### About topics diff --git a/content/github/administering-a-repository/comparing-releases.md b/content/github/administering-a-repository/comparing-releases.md index 7e57598c48..ae83a329db 100644 --- a/content/github/administering-a-repository/comparing-releases.md +++ b/content/github/administering-a-repository/comparing-releases.md @@ -6,6 +6,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.21' github-ae: '*' +topics: + - repositories --- {% data reusables.repositories.navigate-to-repo %} diff --git a/content/github/administering-a-repository/configuration-options-for-dependency-updates.md b/content/github/administering-a-repository/configuration-options-for-dependency-updates.md index a732e3244c..bae978220c 100644 --- a/content/github/administering-a-repository/configuration-options-for-dependency-updates.md +++ b/content/github/administering-a-repository/configuration-options-for-dependency-updates.md @@ -5,6 +5,8 @@ permissions: 'People with write permissions to a repository can configure {% dat miniTocMaxHeadingLevel: 4 versions: free-pro-team: '*' +topics: + - repositories --- {% data reusables.dependabot.beta-note %} diff --git a/content/github/administering-a-repository/configuring-autolinks-to-reference-external-resources.md b/content/github/administering-a-repository/configuring-autolinks-to-reference-external-resources.md index dafdd7d9e5..023771cbe1 100644 --- a/content/github/administering-a-repository/configuring-autolinks-to-reference-external-resources.md +++ b/content/github/administering-a-repository/configuring-autolinks-to-reference-external-resources.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- Anyone with admin permissions to a repository can configure autolink references to link issues, pull requests,{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.21" %} commit messages, and release descriptions{% else %} and commit messages{% endif %} to external third-party services. diff --git a/content/github/administering-a-repository/configuring-commit-rebasing-for-pull-requests.md b/content/github/administering-a-repository/configuring-commit-rebasing-for-pull-requests.md index eb2944629f..2a8e4a235b 100644 --- a/content/github/administering-a-repository/configuring-commit-rebasing-for-pull-requests.md +++ b/content/github/administering-a-repository/configuring-commit-rebasing-for-pull-requests.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% data reusables.pull_requests.configure_pull_request_merges_intro %} diff --git a/content/github/administering-a-repository/configuring-commit-squashing-for-pull-requests.md b/content/github/administering-a-repository/configuring-commit-squashing-for-pull-requests.md index 8a3a1cde8c..010fbbcb58 100644 --- a/content/github/administering-a-repository/configuring-commit-squashing-for-pull-requests.md +++ b/content/github/administering-a-repository/configuring-commit-squashing-for-pull-requests.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% data reusables.pull_requests.configure_pull_request_merges_intro %} diff --git a/content/github/administering-a-repository/configuring-pull-request-merges.md b/content/github/administering-a-repository/configuring-pull-request-merges.md index f42c9d2a9a..4f05c5af5a 100644 --- a/content/github/administering-a-repository/configuring-pull-request-merges.md +++ b/content/github/administering-a-repository/configuring-pull-request-merges.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/administering-a-repository/configuring-secret-scanning-for-your-repositories.md b/content/github/administering-a-repository/configuring-secret-scanning-for-your-repositories.md index 27105cdd2f..1060d92009 100644 --- a/content/github/administering-a-repository/configuring-secret-scanning-for-your-repositories.md +++ b/content/github/administering-a-repository/configuring-secret-scanning-for-your-repositories.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '>=3.0' github-ae: '*' +topics: + - repositories --- {% data reusables.secret-scanning.beta %} diff --git a/content/github/administering-a-repository/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository.md b/content/github/administering-a-repository/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository.md index 8c100e064b..309dca088f 100644 --- a/content/github/administering-a-repository/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository.md +++ b/content/github/administering-a-repository/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository.md @@ -5,6 +5,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.23' github-ae: '*' +topics: + - repositories --- {% data reusables.actions.about-artifact-log-retention %} diff --git a/content/github/administering-a-repository/customizing-dependency-updates.md b/content/github/administering-a-repository/customizing-dependency-updates.md index 95340f31d2..8d078b68fc 100644 --- a/content/github/administering-a-repository/customizing-dependency-updates.md +++ b/content/github/administering-a-repository/customizing-dependency-updates.md @@ -4,6 +4,8 @@ intro: 'You can customize how {% data variables.product.prodname_dependabot %} m permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_dependabot %} for the repository.' versions: free-pro-team: '*' +topics: + - repositories --- {% data reusables.dependabot.beta-note %} diff --git a/content/github/administering-a-repository/customizing-how-changed-files-appear-on-github.md b/content/github/administering-a-repository/customizing-how-changed-files-appear-on-github.md index 77d1e3d332..1e5e81df5b 100644 --- a/content/github/administering-a-repository/customizing-how-changed-files-appear-on-github.md +++ b/content/github/administering-a-repository/customizing-how-changed-files-appear-on-github.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- Use a *.gitattributes* file to mark files that match a given "pattern" with the specified attributes. A *.gitattributes* file uses the same rules for matching as _.gitignore_ files. For more information, see [PATTERN FORMAT](https://www.git-scm.com/docs/gitignore#_pattern_format) in the Git documentation. diff --git a/content/github/administering-a-repository/customizing-your-repositorys-social-media-preview.md b/content/github/administering-a-repository/customizing-your-repositorys-social-media-preview.md index 10a7cc5654..beb609f0db 100644 --- a/content/github/administering-a-repository/customizing-your-repositorys-social-media-preview.md +++ b/content/github/administering-a-repository/customizing-your-repositorys-social-media-preview.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- Until you add an image, repository links expand to show basic information about the repository and the owner's avatar. Adding an image to your repository can help identify your project across various social platforms. diff --git a/content/github/administering-a-repository/defining-the-mergeability-of-pull-requests.md b/content/github/administering-a-repository/defining-the-mergeability-of-pull-requests.md index ddf52fc18c..584181f842 100644 --- a/content/github/administering-a-repository/defining-the-mergeability-of-pull-requests.md +++ b/content/github/administering-a-repository/defining-the-mergeability-of-pull-requests.md @@ -11,5 +11,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/administering-a-repository/deleting-a-repository.md b/content/github/administering-a-repository/deleting-a-repository.md index 87e00bcbfc..51abc910fb 100644 --- a/content/github/administering-a-repository/deleting-a-repository.md +++ b/content/github/administering-a-repository/deleting-a-repository.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% data reusables.organizations.owners-and-admins-can %} delete an organization repository. If **Allow members to delete or transfer repositories for this organization** has been disabled, only organization owners can delete organization repositories. {% data reusables.organizations.new-repo-permissions-more-info %} diff --git a/content/github/administering-a-repository/deleting-and-restoring-branches-in-a-pull-request.md b/content/github/administering-a-repository/deleting-and-restoring-branches-in-a-pull-request.md index 69b1689383..ea22b7c9f4 100644 --- a/content/github/administering-a-repository/deleting-and-restoring-branches-in-a-pull-request.md +++ b/content/github/administering-a-repository/deleting-and-restoring-branches-in-a-pull-request.md @@ -10,6 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### Deleting a branch used for a pull request diff --git a/content/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository.md b/content/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository.md index 4027f7cfc1..d7afb49e30 100644 --- a/content/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository.md +++ b/content/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository.md @@ -5,6 +5,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - repositories --- {% data reusables.actions.enterprise-beta %} diff --git a/content/github/administering-a-repository/displaying-a-sponsor-button-in-your-repository.md b/content/github/administering-a-repository/displaying-a-sponsor-button-in-your-repository.md index 4edba4dded..e665938671 100644 --- a/content/github/administering-a-repository/displaying-a-sponsor-button-in-your-repository.md +++ b/content/github/administering-a-repository/displaying-a-sponsor-button-in-your-repository.md @@ -6,6 +6,8 @@ redirect_from: - /articles/displaying-a-sponsor-button-in-your-repository versions: free-pro-team: '*' +topics: + - repositories --- ### About FUNDING files diff --git a/content/github/administering-a-repository/enabling-and-disabling-version-updates.md b/content/github/administering-a-repository/enabling-and-disabling-version-updates.md index 2b92ea8b18..e84fe4da5c 100644 --- a/content/github/administering-a-repository/enabling-and-disabling-version-updates.md +++ b/content/github/administering-a-repository/enabling-and-disabling-version-updates.md @@ -4,6 +4,8 @@ intro: 'You can configure your repository so that {% data variables.product.prod permissions: 'People with write permissions to a repository can enable or disable {% data variables.product.prodname_dependabot_version_updates %} for the repository.' versions: free-pro-team: '*' +topics: + - repositories --- {% data reusables.dependabot.beta-note-no-link %} diff --git a/content/github/administering-a-repository/enabling-or-disabling-github-discussions-for-a-repository.md b/content/github/administering-a-repository/enabling-or-disabling-github-discussions-for-a-repository.md index 9937e19241..0ec0ad3282 100644 --- a/content/github/administering-a-repository/enabling-or-disabling-github-discussions-for-a-repository.md +++ b/content/github/administering-a-repository/enabling-or-disabling-github-discussions-for-a-repository.md @@ -5,6 +5,8 @@ product: '{% data reusables.gated-features.discussions %}' permissions: People with admin permissions to a repository can enable discussions for the repository. versions: free-pro-team: '*' +topics: + - repositories --- {% data reusables.discussions.beta %} diff --git a/content/github/administering-a-repository/index.md b/content/github/administering-a-repository/index.md index 1a2e46445c..6c1ae35807 100644 --- a/content/github/administering-a-repository/index.md +++ b/content/github/administering-a-repository/index.md @@ -6,6 +6,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot.md b/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot.md index 4e6c7b54b8..212bf528dd 100644 --- a/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot.md +++ b/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot.md @@ -5,6 +5,8 @@ redirect_from: - /github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot versions: free-pro-team: '*' +topics: + - repositories --- {% data reusables.dependabot.beta-note %} diff --git a/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md b/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md index 3c6c79af15..5b7076daa1 100644 --- a/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md +++ b/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md @@ -4,5 +4,7 @@ intro: '{% data variables.product.prodname_dependabot %} can maintain your repos mapTopic: true versions: free-pro-team: '*' +topics: + - repositories --- diff --git a/content/github/administering-a-repository/linking-to-releases.md b/content/github/administering-a-repository/linking-to-releases.md index 8d87615b86..b6cb7bbcba 100644 --- a/content/github/administering-a-repository/linking-to-releases.md +++ b/content/github/administering-a-repository/linking-to-releases.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% data reusables.repositories.navigate-to-repo %} diff --git a/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md b/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md index 19a0c93aee..5fb3ca1c67 100644 --- a/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md +++ b/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md @@ -3,6 +3,8 @@ title: Listing dependencies configured for version updates intro: 'You can view the dependencies that {% data variables.product.prodname_dependabot %} monitors for updates.' versions: free-pro-team: '*' +topics: + - repositories --- {% data reusables.dependabot.beta-note %} diff --git a/content/github/administering-a-repository/managing-a-branch-protection-rule.md b/content/github/administering-a-repository/managing-a-branch-protection-rule.md index 06a6d484d7..38384638d7 100644 --- a/content/github/administering-a-repository/managing-a-branch-protection-rule.md +++ b/content/github/administering-a-repository/managing-a-branch-protection-rule.md @@ -21,6 +21,8 @@ versions: enterprise-server: '*' github-ae: '*' permissions: People with admin permissions to a repository can manage branch protection rules. +topics: + - repositories --- ### About branch protection rules diff --git a/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md b/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md index d6c7398e98..e4495dda34 100644 --- a/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md +++ b/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md @@ -6,6 +6,8 @@ versions: free-pro-team: '*' enterprise-server: '>=3.0' github-ae: '*' +topics: + - repositories --- {% data reusables.secret-scanning.beta %} diff --git a/content/github/administering-a-repository/managing-auto-merge-for-pull-requests-in-your-repository.md b/content/github/administering-a-repository/managing-auto-merge-for-pull-requests-in-your-repository.md index 8773a1704d..0e7cb11f0f 100644 --- a/content/github/administering-a-repository/managing-auto-merge-for-pull-requests-in-your-repository.md +++ b/content/github/administering-a-repository/managing-auto-merge-for-pull-requests-in-your-repository.md @@ -1,12 +1,14 @@ --- title: Managing auto-merge for pull requests in your repository -intro: "You can allow or disallow auto-merge for pull requests in your repository." +intro: You can allow or disallow auto-merge for pull requests in your repository. product: '{% data reusables.gated-features.auto-merge %}' versions: free-pro-team: '*' enterprise-server: '>=3.1' github-ae: '*' permissions: People with maintainer permissions can manage auto-merge for pull requests in a repository. +topics: + - repositories --- If you allow auto-merge for pull requests in your repository, people can configure individual pull requests in the repository to merge automatically when all merge requirements are met. For more information, see "[Automatically merging a pull request](/github/collaborating-with-issues-and-pull-requests/automatically-merging-a-pull-request)." diff --git a/content/github/administering-a-repository/managing-branches-in-your-repository.md b/content/github/administering-a-repository/managing-branches-in-your-repository.md index 2688f35f9e..c59c70f2b2 100644 --- a/content/github/administering-a-repository/managing-branches-in-your-repository.md +++ b/content/github/administering-a-repository/managing-branches-in-your-repository.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository.md b/content/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository.md index a4bb51ee20..f8f65c1c80 100644 --- a/content/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository.md +++ b/content/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '>3.0' github-ae: '*' +topics: + - repositories --- ### About {% data variables.large_files.product_name_short %} objects in archives diff --git a/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md b/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md index ebe089535a..ed3277df69 100644 --- a/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md +++ b/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md @@ -3,6 +3,8 @@ title: Managing pull requests for dependency updates intro: 'You manage pull requests raised by {% data variables.product.prodname_dependabot %} in much the same way as other pull requests, but there are some extra options.' versions: free-pro-team: '*' +topics: + - repositories --- {% data reusables.dependabot.beta-note %} diff --git a/content/github/administering-a-repository/managing-releases-in-a-repository.md b/content/github/administering-a-repository/managing-releases-in-a-repository.md index fb779d9e7c..0998c7252e 100644 --- a/content/github/administering-a-repository/managing-releases-in-a-repository.md +++ b/content/github/administering-a-repository/managing-releases-in-a-repository.md @@ -13,6 +13,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.0" or currentVersion ver_gt "github-ae@latest" %} diff --git a/content/github/administering-a-repository/managing-repository-settings.md b/content/github/administering-a-repository/managing-repository-settings.md index fe7f46cdc3..d62b9d82b2 100644 --- a/content/github/administering-a-repository/managing-repository-settings.md +++ b/content/github/administering-a-repository/managing-repository-settings.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md b/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md index e2d5b0a90b..4eed68ffc8 100644 --- a/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md +++ b/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md @@ -11,6 +11,8 @@ versions: free-pro-team: '*' enterprise-server: '>=3.0' github-ae: '*' +topics: + - repositories --- {% if currentVersion == "free-pro-team@latest" %} diff --git a/content/github/administering-a-repository/managing-teams-and-people-with-access-to-your-repository.md b/content/github/administering-a-repository/managing-teams-and-people-with-access-to-your-repository.md index 9e38d3ccec..fc4dac0766 100644 --- a/content/github/administering-a-repository/managing-teams-and-people-with-access-to-your-repository.md +++ b/content/github/administering-a-repository/managing-teams-and-people-with-access-to-your-repository.md @@ -6,6 +6,8 @@ redirect_from: - /github/administering-a-repository/managing-people-and-teams-with-access-to-your-repository versions: free-pro-team: '*' +topics: + - repositories --- ### About managing access to your repository diff --git a/content/github/administering-a-repository/managing-the-automatic-deletion-of-branches.md b/content/github/administering-a-repository/managing-the-automatic-deletion-of-branches.md index f165dc4986..ffa5b30e4a 100644 --- a/content/github/administering-a-repository/managing-the-automatic-deletion-of-branches.md +++ b/content/github/administering-a-repository/managing-the-automatic-deletion-of-branches.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- Anyone with admin permissions to a repository can enable or disable the automatic deletion of branches. diff --git a/content/github/administering-a-repository/managing-the-forking-policy-for-your-repository.md b/content/github/administering-a-repository/managing-the-forking-policy-for-your-repository.md index 94e4afbdf9..6d6be04cd2 100644 --- a/content/github/administering-a-repository/managing-the-forking-policy-for-your-repository.md +++ b/content/github/administering-a-repository/managing-the-forking-policy-for-your-repository.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- An organization owner must allow forks of private{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %} and internal{% endif %} repositories on the organization level before you can allow or disallow forks for a specific repository. For more information, see "[Managing the forking policy for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-the-forking-policy-for-your-organization)." diff --git a/content/github/administering-a-repository/releasing-projects-on-github.md b/content/github/administering-a-repository/releasing-projects-on-github.md index 372ed4cafc..0ee087417a 100644 --- a/content/github/administering-a-repository/releasing-projects-on-github.md +++ b/content/github/administering-a-repository/releasing-projects-on-github.md @@ -9,5 +9,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/administering-a-repository/renaming-a-branch.md b/content/github/administering-a-repository/renaming-a-branch.md index 7b23d9d5d5..2386a11954 100644 --- a/content/github/administering-a-repository/renaming-a-branch.md +++ b/content/github/administering-a-repository/renaming-a-branch.md @@ -5,6 +5,8 @@ permissions: People with write permissions to a repository can rename a branch i versions: free-pro-team: '*' enterprise-server: '>=3.1' +topics: + - repositories --- ### About renaming branches diff --git a/content/github/administering-a-repository/renaming-a-repository.md b/content/github/administering-a-repository/renaming-a-repository.md index 49b2a1bb30..57638a77a7 100644 --- a/content/github/administering-a-repository/renaming-a-repository.md +++ b/content/github/administering-a-repository/renaming-a-repository.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- When you rename a repository, all existing information, with the exception of project site URLs, is automatically redirected to the new name, including: diff --git a/content/github/administering-a-repository/restoring-a-deleted-repository.md b/content/github/administering-a-repository/restoring-a-deleted-repository.md index 7f8ac645e7..52e4b9e21e 100644 --- a/content/github/administering-a-repository/restoring-a-deleted-repository.md +++ b/content/github/administering-a-repository/restoring-a-deleted-repository.md @@ -5,6 +5,8 @@ redirect_from: - /articles/restoring-a-deleted-repository versions: free-pro-team: '*' +topics: + - repositories --- Anyone can restore deleted repositories that were owned by their own user account. Organization owners can restore deleted repositories that were owned by the organization. diff --git a/content/github/administering-a-repository/securing-your-repository.md b/content/github/administering-a-repository/securing-your-repository.md index 73f4af51ea..357d9148e6 100644 --- a/content/github/administering-a-repository/securing-your-repository.md +++ b/content/github/administering-a-repository/securing-your-repository.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '>=3.0' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/administering-a-repository/setting-repository-visibility.md b/content/github/administering-a-repository/setting-repository-visibility.md index 8663c2e5cb..587bf86a29 100644 --- a/content/github/administering-a-repository/setting-repository-visibility.md +++ b/content/github/administering-a-repository/setting-repository-visibility.md @@ -10,6 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### About repository visibility changes diff --git a/content/github/administering-a-repository/transferring-a-repository.md b/content/github/administering-a-repository/transferring-a-repository.md index 95343d8a7a..94388ad8a4 100644 --- a/content/github/administering-a-repository/transferring-a-repository.md +++ b/content/github/administering-a-repository/transferring-a-repository.md @@ -16,6 +16,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### About repository transfers diff --git a/content/github/administering-a-repository/troubleshooting-required-status-checks.md b/content/github/administering-a-repository/troubleshooting-required-status-checks.md index d07532b5f4..3424fb27b7 100644 --- a/content/github/administering-a-repository/troubleshooting-required-status-checks.md +++ b/content/github/administering-a-repository/troubleshooting-required-status-checks.md @@ -1,11 +1,13 @@ --- title: Troubleshooting required status checks -intro: 'You can check for common errors and resolve issues with required status checks.' +intro: You can check for common errors and resolve issues with required status checks. product: '{% data reusables.gated-features.protected-branches %}' versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- If you have a check and a status with the same name, and you select that name as a required status check, both the check and the status are required. For more information, see "[Checks](/rest/reference/checks)." diff --git a/content/github/administering-a-repository/viewing-branches-in-your-repository.md b/content/github/administering-a-repository/viewing-branches-in-your-repository.md index ce60dccc84..f2c4839806 100644 --- a/content/github/administering-a-repository/viewing-branches-in-your-repository.md +++ b/content/github/administering-a-repository/viewing-branches-in-your-repository.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.navigate-to-branches %} diff --git a/content/github/administering-a-repository/viewing-deployment-activity-for-your-repository.md b/content/github/administering-a-repository/viewing-deployment-activity-for-your-repository.md index 9c6758f8c1..d551f5f755 100644 --- a/content/github/administering-a-repository/viewing-deployment-activity-for-your-repository.md +++ b/content/github/administering-a-repository/viewing-deployment-activity-for-your-repository.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% note %} diff --git a/content/github/administering-a-repository/viewing-your-repositorys-releases-and-tags.md b/content/github/administering-a-repository/viewing-your-repositorys-releases-and-tags.md index e11d111666..bc64774ab1 100644 --- a/content/github/administering-a-repository/viewing-your-repositorys-releases-and-tags.md +++ b/content/github/administering-a-repository/viewing-your-repositorys-releases-and-tags.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %} diff --git a/content/github/authenticating-to-github/about-anonymized-image-urls.md b/content/github/authenticating-to-github/about-anonymized-image-urls.md index d36acb1003..f1f469fcb0 100644 --- a/content/github/authenticating-to-github/about-anonymized-image-urls.md +++ b/content/github/authenticating-to-github/about-anonymized-image-urls.md @@ -6,6 +6,9 @@ redirect_from: - /articles/about-anonymized-image-urls versions: free-pro-team: '*' +topics: + - identity + - access management --- To host your images, {% data variables.product.product_name %} uses the [open-source project Camo](https://github.com/atmos/camo). Camo generates an anonymous URL proxy for each image which hides your browser details and related information from other users. The URL starts `https://.githubusercontent.com/`, with different subdomains depending on how you uploaded the image. diff --git a/content/github/authenticating-to-github/about-authentication-to-github.md b/content/github/authenticating-to-github/about-authentication-to-github.md index c7d1f21a1a..1f3dad6026 100644 --- a/content/github/authenticating-to-github/about-authentication-to-github.md +++ b/content/github/authenticating-to-github/about-authentication-to-github.md @@ -5,6 +5,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- ### About authentication to {% data variables.product.prodname_dotcom %} diff --git a/content/github/authenticating-to-github/about-authentication-with-saml-single-sign-on.md b/content/github/authenticating-to-github/about-authentication-with-saml-single-sign-on.md index bb6b3e7304..c7f6ff6491 100644 --- a/content/github/authenticating-to-github/about-authentication-with-saml-single-sign-on.md +++ b/content/github/authenticating-to-github/about-authentication-with-saml-single-sign-on.md @@ -7,6 +7,8 @@ redirect_from: versions: free-pro-team: '*' github-ae: '*' +topics: + - sso --- ### About authentication with SAML SSO diff --git a/content/github/authenticating-to-github/about-commit-signature-verification.md b/content/github/authenticating-to-github/about-commit-signature-verification.md index 4c51889491..77a2b528ca 100644 --- a/content/github/authenticating-to-github/about-commit-signature-verification.md +++ b/content/github/authenticating-to-github/about-commit-signature-verification.md @@ -9,6 +9,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- ### About commit signature verification diff --git a/content/github/authenticating-to-github/about-githubs-ip-addresses.md b/content/github/authenticating-to-github/about-githubs-ip-addresses.md index 0ffa4bb10a..1718f9d21c 100644 --- a/content/github/authenticating-to-github/about-githubs-ip-addresses.md +++ b/content/github/authenticating-to-github/about-githubs-ip-addresses.md @@ -10,6 +10,9 @@ redirect_from: - /articles/about-githubs-ip-addresses versions: free-pro-team: '*' +topics: + - identity + - access management --- You can retrieve a list of {% data variables.product.prodname_dotcom %}'s IP addresses from the [meta](https://api.github.com/meta) API endpoint. For more information, see "[Meta](/rest/reference/meta)." diff --git a/content/github/authenticating-to-github/about-ssh.md b/content/github/authenticating-to-github/about-ssh.md index e6d03cbea3..2eaef9677c 100644 --- a/content/github/authenticating-to-github/about-ssh.md +++ b/content/github/authenticating-to-github/about-ssh.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- When you set up SSH, you'll [generate an SSH key and add it to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) and then [add the key to your {% data variables.product.product_name %} account](/articles/adding-a-new-ssh-key-to-your-github-account). Adding the SSH key to the ssh-agent ensures that your SSH key has an extra layer of security through the use of a passphrase. For more information, see "[Working with SSH key passphrases](/articles/working-with-ssh-key-passphrases)." diff --git a/content/github/authenticating-to-github/about-two-factor-authentication.md b/content/github/authenticating-to-github/about-two-factor-authentication.md index 478630fc95..fec3b375c2 100644 --- a/content/github/authenticating-to-github/about-two-factor-authentication.md +++ b/content/github/authenticating-to-github/about-two-factor-authentication.md @@ -6,6 +6,8 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - 2fa --- For {% data variables.product.product_name %}, the second form of authentication is a code that's generated by an application on your mobile device{% if currentVersion == "free-pro-team@latest" %} or sent as a text message (SMS){% endif %}. After you enable 2FA, {% data variables.product.product_name %} generates an authentication code any time someone attempts to sign into your {% data variables.product.product_name %} account. The only way someone can sign into your account is if they know both your password and have access to the authentication code on your phone. diff --git a/content/github/authenticating-to-github/accessing-github-using-two-factor-authentication.md b/content/github/authenticating-to-github/accessing-github-using-two-factor-authentication.md index 4310af7d71..0b15769178 100644 --- a/content/github/authenticating-to-github/accessing-github-using-two-factor-authentication.md +++ b/content/github/authenticating-to-github/accessing-github-using-two-factor-authentication.md @@ -9,6 +9,8 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - 2fa --- With two-factor authentication enabled, you'll need to provide an authentication code when accessing {% data variables.product.product_name %} through your browser. If you access {% data variables.product.product_name %} using other methods, such as the API or the command line, you'll need to use an alternative form of authentication. For more information, see "[About authentication to {% data variables.product.prodname_dotcom %}](/github/authenticating-to-github/about-authentication-to-github)." diff --git a/content/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account.md b/content/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account.md index e8c4ba5e23..6df4b4b162 100644 --- a/content/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account.md +++ b/content/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- Before adding a new GPG key to your {% data variables.product.product_name %} account, you should have: diff --git a/content/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account.md b/content/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account.md index 668b00c955..0638c2432f 100644 --- a/content/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account.md +++ b/content/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- Before adding a new SSH key to your {% data variables.product.product_name %} account, you should have: diff --git a/content/github/authenticating-to-github/associating-an-email-with-your-gpg-key.md b/content/github/authenticating-to-github/associating-an-email-with-your-gpg-key.md index 79bf3d46bf..895402d671 100644 --- a/content/github/authenticating-to-github/associating-an-email-with-your-gpg-key.md +++ b/content/github/authenticating-to-github/associating-an-email-with-your-gpg-key.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- {% note %} diff --git a/content/github/authenticating-to-github/authenticating-with-saml-single-sign-on.md b/content/github/authenticating-to-github/authenticating-with-saml-single-sign-on.md index e1cc609301..bd089ba9e7 100644 --- a/content/github/authenticating-to-github/authenticating-with-saml-single-sign-on.md +++ b/content/github/authenticating-to-github/authenticating-with-saml-single-sign-on.md @@ -9,5 +9,7 @@ redirect_from: versions: free-pro-team: '*' github-ae: '*' +topics: + - sso --- diff --git a/content/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md b/content/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md index 6b52b66658..f7d73042d1 100644 --- a/content/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md +++ b/content/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md @@ -6,6 +6,8 @@ redirect_from: - /articles/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on versions: free-pro-team: '*' +topics: + - sso --- You can authorize an existing personal access token, or [create a new personal access token](/github/authenticating-to-github/creating-a-personal-access-token) and then authorize it. diff --git a/content/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on.md b/content/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on.md index ee2b69a4b7..dd401111ea 100644 --- a/content/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on.md +++ b/content/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on.md @@ -6,6 +6,8 @@ redirect_from: - /articles/authorizing-an-ssh-key-for-use-with-saml-single-sign-on versions: free-pro-team: '*' +topics: + - sso --- You can authorize an existing SSH key, or create a new SSH key and then authorize it. For more information about creating a new SSH key, see "[Generating a new SSH key and adding it to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)." diff --git a/content/github/authenticating-to-github/authorizing-oauth-apps.md b/content/github/authenticating-to-github/authorizing-oauth-apps.md index dca4ac4c69..6c32b4a444 100644 --- a/content/github/authenticating-to-github/authorizing-oauth-apps.md +++ b/content/github/authenticating-to-github/authorizing-oauth-apps.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- When an {% data variables.product.prodname_oauth_app %} wants to identify you by your {% data variables.product.product_name %} account, you'll see a page with the app's developer contact information and a list of the specific data that's being requested. diff --git a/content/github/authenticating-to-github/changing-two-factor-authentication-delivery-methods-for-your-mobile-device.md b/content/github/authenticating-to-github/changing-two-factor-authentication-delivery-methods-for-your-mobile-device.md index c2889d5547..b57c38d604 100644 --- a/content/github/authenticating-to-github/changing-two-factor-authentication-delivery-methods-for-your-mobile-device.md +++ b/content/github/authenticating-to-github/changing-two-factor-authentication-delivery-methods-for-your-mobile-device.md @@ -6,6 +6,8 @@ redirect_from: - /articles/changing-two-factor-authentication-delivery-methods-for-your-mobile-device versions: free-pro-team: '*' +topics: + - 2fa --- {% note %} diff --git a/content/github/authenticating-to-github/checking-for-existing-gpg-keys.md b/content/github/authenticating-to-github/checking-for-existing-gpg-keys.md index 1ffc22df36..0abd12c197 100644 --- a/content/github/authenticating-to-github/checking-for-existing-gpg-keys.md +++ b/content/github/authenticating-to-github/checking-for-existing-gpg-keys.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- {% data reusables.gpg.supported-gpg-key-algorithms %} diff --git a/content/github/authenticating-to-github/checking-for-existing-ssh-keys.md b/content/github/authenticating-to-github/checking-for-existing-ssh-keys.md index 9a95a12d6b..1131f1f04e 100644 --- a/content/github/authenticating-to-github/checking-for-existing-ssh-keys.md +++ b/content/github/authenticating-to-github/checking-for-existing-ssh-keys.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- {% data reusables.ssh.dsa-support %} diff --git a/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md b/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md index 2e7403a50f..36d736bca8 100644 --- a/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md +++ b/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md @@ -8,6 +8,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- ### Checking your commit signature verification status diff --git a/content/github/authenticating-to-github/configuring-two-factor-authentication-recovery-methods.md b/content/github/authenticating-to-github/configuring-two-factor-authentication-recovery-methods.md index 937293a143..ac37753066 100644 --- a/content/github/authenticating-to-github/configuring-two-factor-authentication-recovery-methods.md +++ b/content/github/authenticating-to-github/configuring-two-factor-authentication-recovery-methods.md @@ -11,6 +11,8 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - 2fa --- In addition to securely storing your two-factor authentication recovery codes, we strongly recommend configuring one or more additional recovery methods. diff --git a/content/github/authenticating-to-github/configuring-two-factor-authentication.md b/content/github/authenticating-to-github/configuring-two-factor-authentication.md index bc352f983e..3066f68814 100644 --- a/content/github/authenticating-to-github/configuring-two-factor-authentication.md +++ b/content/github/authenticating-to-github/configuring-two-factor-authentication.md @@ -9,6 +9,8 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - 2fa --- You can configure two-factor authentication using a mobile app{% if currentVersion == "free-pro-team@latest" %} or via text message{% endif %}. You can also add a security key. diff --git a/content/github/authenticating-to-github/connecting-to-github-with-ssh.md b/content/github/authenticating-to-github/connecting-to-github-with-ssh.md index 2f82f7db52..09ce32816e 100644 --- a/content/github/authenticating-to-github/connecting-to-github-with-ssh.md +++ b/content/github/authenticating-to-github/connecting-to-github-with-ssh.md @@ -15,5 +15,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- diff --git a/content/github/authenticating-to-github/connecting-with-third-party-applications.md b/content/github/authenticating-to-github/connecting-with-third-party-applications.md index a0e789b822..5ffb4b5bf2 100644 --- a/content/github/authenticating-to-github/connecting-with-third-party-applications.md +++ b/content/github/authenticating-to-github/connecting-with-third-party-applications.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- When a third-party application wants to identify you by your {% data variables.product.product_name %} login, you'll see a page with the developer contact information and a list of the specific data that's being requested. diff --git a/content/github/authenticating-to-github/countries-where-sms-authentication-is-supported.md b/content/github/authenticating-to-github/countries-where-sms-authentication-is-supported.md index aa7dc1332f..95d39a899a 100644 --- a/content/github/authenticating-to-github/countries-where-sms-authentication-is-supported.md +++ b/content/github/authenticating-to-github/countries-where-sms-authentication-is-supported.md @@ -5,6 +5,8 @@ redirect_from: - /articles/countries-where-sms-authentication-is-supported versions: free-pro-team: '*' +topics: + - 2fa --- If we don't support two-factor authentication via text message for your country of residence, you can set up authentication via a TOTP mobile application. For more information, see "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)." diff --git a/content/github/authenticating-to-github/creating-a-personal-access-token.md b/content/github/authenticating-to-github/creating-a-personal-access-token.md index eb78e05486..2340dc5433 100644 --- a/content/github/authenticating-to-github/creating-a-personal-access-token.md +++ b/content/github/authenticating-to-github/creating-a-personal-access-token.md @@ -10,6 +10,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- Personal access tokens (PATs) are an alternative to using passwords for authentication to {% data variables.product.product_name %} when using the [GitHub API](/rest/overview/other-authentication-methods#via-oauth-and-personal-access-tokens) or the [command line](#using-a-token-on-the-command-line). diff --git a/content/github/authenticating-to-github/creating-a-strong-password.md b/content/github/authenticating-to-github/creating-a-strong-password.md index 754ca8c949..db2e968ad7 100644 --- a/content/github/authenticating-to-github/creating-a-strong-password.md +++ b/content/github/authenticating-to-github/creating-a-strong-password.md @@ -7,6 +7,9 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - identity + - access management --- You must choose or generate a password for your {% data variables.product.product_name %} account that is at least: diff --git a/content/github/authenticating-to-github/deleted-or-missing-ssh-keys.md b/content/github/authenticating-to-github/deleted-or-missing-ssh-keys.md index a815793bf9..2d62415729 100644 --- a/content/github/authenticating-to-github/deleted-or-missing-ssh-keys.md +++ b/content/github/authenticating-to-github/deleted-or-missing-ssh-keys.md @@ -5,6 +5,8 @@ redirect_from: - /articles/deleted-or-missing-ssh-keys versions: free-pro-team: '*' +topics: + - ssh --- {% data variables.product.prodname_dotcom %} automatically deletes inactive SSH keys to help keep accounts safe, such as after someone leaves a job or loses a computer. diff --git a/content/github/authenticating-to-github/disabling-two-factor-authentication-for-your-personal-account.md b/content/github/authenticating-to-github/disabling-two-factor-authentication-for-your-personal-account.md index 6364fe6238..334725eabb 100644 --- a/content/github/authenticating-to-github/disabling-two-factor-authentication-for-your-personal-account.md +++ b/content/github/authenticating-to-github/disabling-two-factor-authentication-for-your-personal-account.md @@ -6,6 +6,8 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - 2fa --- We strongly recommend using two-factor authentication to secure your account. If you need to disable 2FA, we recommend re-enabling it as soon as possible. diff --git a/content/github/authenticating-to-github/error-agent-admitted-failure-to-sign.md b/content/github/authenticating-to-github/error-agent-admitted-failure-to-sign.md index ad63b888c3..0a0cf75aaf 100644 --- a/content/github/authenticating-to-github/error-agent-admitted-failure-to-sign.md +++ b/content/github/authenticating-to-github/error-agent-admitted-failure-to-sign.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- When trying to SSH into {% data variables.product.product_location %} on a Linux computer, you may see the following message in your terminal: diff --git a/content/github/authenticating-to-github/error-bad-file-number.md b/content/github/authenticating-to-github/error-bad-file-number.md index af70808b43..c652063f74 100644 --- a/content/github/authenticating-to-github/error-bad-file-number.md +++ b/content/github/authenticating-to-github/error-bad-file-number.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- When running remote Git commands or SSH, your connection might time out: diff --git a/content/github/authenticating-to-github/error-key-already-in-use.md b/content/github/authenticating-to-github/error-key-already-in-use.md index 2e4c52a8bf..91003389a0 100644 --- a/content/github/authenticating-to-github/error-key-already-in-use.md +++ b/content/github/authenticating-to-github/error-key-already-in-use.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- ### Finding where the key has been used diff --git a/content/github/authenticating-to-github/error-permission-denied-publickey.md b/content/github/authenticating-to-github/error-permission-denied-publickey.md index 6057153d6b..6c57fec292 100644 --- a/content/github/authenticating-to-github/error-permission-denied-publickey.md +++ b/content/github/authenticating-to-github/error-permission-denied-publickey.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- ### Should the `sudo` command be used with Git? diff --git a/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-other-user.md b/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-other-user.md index f45e846a3e..51660edaec 100644 --- a/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-other-user.md +++ b/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-other-user.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- To fix this, the owner of the repository (`user`) needs to add your account (`other-user`) as a collaborator on the repository or to a team that has write access to the repository. diff --git a/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-userother-repo.md b/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-userother-repo.md index dda09ea92a..818e7dc717 100644 --- a/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-userother-repo.md +++ b/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-userother-repo.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- To fix this, remove the deploy key from the repository, and [add the key to your user account](/articles/adding-a-new-ssh-key-to-your-github-account) instead. diff --git a/content/github/authenticating-to-github/error-ssh-add-illegal-option----k.md b/content/github/authenticating-to-github/error-ssh-add-illegal-option----k.md index 3d9d3e3fad..9699bf3bc7 100644 --- a/content/github/authenticating-to-github/error-ssh-add-illegal-option----k.md +++ b/content/github/authenticating-to-github/error-ssh-add-illegal-option----k.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- The `-K` option is in Apple's standard version of `ssh-add`, which stores the passphrase in your keychain for you when you add an ssh key to the ssh-agent. If you have installed a different version of `ssh-add`, it may lack support for `-K`. diff --git a/content/github/authenticating-to-github/error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok.md b/content/github/authenticating-to-github/error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok.md index 1c844c3838..1d0e213750 100644 --- a/content/github/authenticating-to-github/error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok.md +++ b/content/github/authenticating-to-github/error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok.md @@ -5,6 +5,8 @@ redirect_from: - /articles/error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok versions: free-pro-team: '*' +topics: + - ssh --- The error you receive may look like the following: diff --git a/content/github/authenticating-to-github/error-were-doing-an-ssh-key-audit.md b/content/github/authenticating-to-github/error-were-doing-an-ssh-key-audit.md index 3ca153f2df..fadb01e5fd 100644 --- a/content/github/authenticating-to-github/error-were-doing-an-ssh-key-audit.md +++ b/content/github/authenticating-to-github/error-were-doing-an-ssh-key-audit.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- When using an unverified key to perform Git operations, you will be prompted to perform an audit of your SSH keys. diff --git a/content/github/authenticating-to-github/generating-a-new-gpg-key.md b/content/github/authenticating-to-github/generating-a-new-gpg-key.md index b02d4f0cef..65069037b2 100644 --- a/content/github/authenticating-to-github/generating-a-new-gpg-key.md +++ b/content/github/authenticating-to-github/generating-a-new-gpg-key.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- {% data reusables.gpg.supported-gpg-key-algorithms %} diff --git a/content/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md b/content/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md index 020d609a12..93182ab506 100644 --- a/content/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md +++ b/content/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- If you don't already have an SSH key, you must [generate a new SSH key](#generating-a-new-ssh-key). If you're unsure whether you already have an SSH key, check for [existing keys](/articles/checking-for-existing-ssh-keys). diff --git a/content/github/authenticating-to-github/githubs-ssh-key-fingerprints.md b/content/github/authenticating-to-github/githubs-ssh-key-fingerprints.md index 309b4e69c1..6b47b5874f 100644 --- a/content/github/authenticating-to-github/githubs-ssh-key-fingerprints.md +++ b/content/github/authenticating-to-github/githubs-ssh-key-fingerprints.md @@ -7,6 +7,9 @@ redirect_from: - /articles/githubs-ssh-key-fingerprints versions: free-pro-team: '*' +topics: + - identity + - access management --- These are {% data variables.product.prodname_dotcom %}'s public key fingerprints: diff --git a/content/github/authenticating-to-github/index.md b/content/github/authenticating-to-github/index.md index 30e51c7087..d59e1b78c4 100644 --- a/content/github/authenticating-to-github/index.md +++ b/content/github/authenticating-to-github/index.md @@ -17,6 +17,12 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - 2fa + - identity + - access management + - usernames + - device verification --- diff --git a/content/github/authenticating-to-github/keeping-your-account-and-data-secure.md b/content/github/authenticating-to-github/keeping-your-account-and-data-secure.md index 183fecb7f3..f2cceaccef 100644 --- a/content/github/authenticating-to-github/keeping-your-account-and-data-secure.md +++ b/content/github/authenticating-to-github/keeping-your-account-and-data-secure.md @@ -8,5 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- diff --git a/content/github/authenticating-to-github/managing-commit-signature-verification.md b/content/github/authenticating-to-github/managing-commit-signature-verification.md index da61d71196..1402793ca0 100644 --- a/content/github/authenticating-to-github/managing-commit-signature-verification.md +++ b/content/github/authenticating-to-github/managing-commit-signature-verification.md @@ -10,5 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- diff --git a/content/github/authenticating-to-github/preventing-unauthorized-access.md b/content/github/authenticating-to-github/preventing-unauthorized-access.md index 79c9518fac..80cf7fc056 100644 --- a/content/github/authenticating-to-github/preventing-unauthorized-access.md +++ b/content/github/authenticating-to-github/preventing-unauthorized-access.md @@ -6,6 +6,9 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - identity + - access management --- {% data variables.product.product_name %} requires a password to perform sensitive actions, such as adding new SSH keys, authorizing applications, or modifying team members. diff --git a/content/github/authenticating-to-github/recovering-your-account-if-you-lose-your-2fa-credentials.md b/content/github/authenticating-to-github/recovering-your-account-if-you-lose-your-2fa-credentials.md index e3259b0eff..f6fad1ddb2 100644 --- a/content/github/authenticating-to-github/recovering-your-account-if-you-lose-your-2fa-credentials.md +++ b/content/github/authenticating-to-github/recovering-your-account-if-you-lose-your-2fa-credentials.md @@ -8,6 +8,8 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - 2fa --- {% if currentVersion == "free-pro-team@latest" %} diff --git a/content/github/authenticating-to-github/recovering-your-ssh-key-passphrase.md b/content/github/authenticating-to-github/recovering-your-ssh-key-passphrase.md index fc251cc1e1..e5bc1c00c6 100644 --- a/content/github/authenticating-to-github/recovering-your-ssh-key-passphrase.md +++ b/content/github/authenticating-to-github/recovering-your-ssh-key-passphrase.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- {% mac %} diff --git a/content/github/authenticating-to-github/removing-sensitive-data-from-a-repository.md b/content/github/authenticating-to-github/removing-sensitive-data-from-a-repository.md index 55bd3a3601..95e6b04666 100644 --- a/content/github/authenticating-to-github/removing-sensitive-data-from-a-repository.md +++ b/content/github/authenticating-to-github/removing-sensitive-data-from-a-repository.md @@ -10,6 +10,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- The `git filter-branch` command and the BFG Repo-Cleaner rewrite your repository's history, which changes the SHAs for existing commits that you alter and any dependent commits. Changed commit SHAs may affect open pull requests in your repository. We recommend merging or closing all open pull requests before removing files from your repository. diff --git a/content/github/authenticating-to-github/reviewing-your-authorized-applications-oauth.md b/content/github/authenticating-to-github/reviewing-your-authorized-applications-oauth.md index ce1fd85a57..81cd79e7ff 100644 --- a/content/github/authenticating-to-github/reviewing-your-authorized-applications-oauth.md +++ b/content/github/authenticating-to-github/reviewing-your-authorized-applications-oauth.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- {% data reusables.user_settings.access_settings %} diff --git a/content/github/authenticating-to-github/reviewing-your-authorized-integrations.md b/content/github/authenticating-to-github/reviewing-your-authorized-integrations.md index 6bbe5801e1..6423bac6f8 100644 --- a/content/github/authenticating-to-github/reviewing-your-authorized-integrations.md +++ b/content/github/authenticating-to-github/reviewing-your-authorized-integrations.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- ### Reviewing your authorized {% data variables.product.prodname_oauth_app %}s diff --git a/content/github/authenticating-to-github/reviewing-your-deploy-keys.md b/content/github/authenticating-to-github/reviewing-your-deploy-keys.md index 85eba969b9..f6b160dfd0 100644 --- a/content/github/authenticating-to-github/reviewing-your-deploy-keys.md +++ b/content/github/authenticating-to-github/reviewing-your-deploy-keys.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- {% data reusables.repositories.navigate-to-repo %} diff --git a/content/github/authenticating-to-github/reviewing-your-security-log.md b/content/github/authenticating-to-github/reviewing-your-security-log.md index 01aa0036e4..466c990e1c 100644 --- a/content/github/authenticating-to-github/reviewing-your-security-log.md +++ b/content/github/authenticating-to-github/reviewing-your-security-log.md @@ -8,6 +8,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- ### Accessing your security log diff --git a/content/github/authenticating-to-github/reviewing-your-ssh-keys.md b/content/github/authenticating-to-github/reviewing-your-ssh-keys.md index ba3e70593d..2aec1117d3 100644 --- a/content/github/authenticating-to-github/reviewing-your-ssh-keys.md +++ b/content/github/authenticating-to-github/reviewing-your-ssh-keys.md @@ -9,6 +9,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- You can delete unauthorized (or possibly compromised) SSH keys to ensure that an attacker no longer has access to your repositories. You can also approve existing SSH keys that are valid. diff --git a/content/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa.md b/content/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa.md index 597dc2ed96..5dc2e4fc18 100644 --- a/content/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa.md +++ b/content/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa.md @@ -9,5 +9,7 @@ mapTopic: true versions: free-pro-team: '*' enterprise-server: '*' +topics: + - 2fa --- diff --git a/content/github/authenticating-to-github/signing-commits.md b/content/github/authenticating-to-github/signing-commits.md index fe4fefa5cb..247301e527 100644 --- a/content/github/authenticating-to-github/signing-commits.md +++ b/content/github/authenticating-to-github/signing-commits.md @@ -9,6 +9,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- {% data reusables.gpg.desktop-support-for-commit-signing %} diff --git a/content/github/authenticating-to-github/signing-tags.md b/content/github/authenticating-to-github/signing-tags.md index 7924021445..08026ad479 100644 --- a/content/github/authenticating-to-github/signing-tags.md +++ b/content/github/authenticating-to-github/signing-tags.md @@ -8,6 +8,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- {% data reusables.gpg.desktop-support-for-commit-signing %} diff --git a/content/github/authenticating-to-github/sudo-mode.md b/content/github/authenticating-to-github/sudo-mode.md index 065f2c0582..a20303dd82 100644 --- a/content/github/authenticating-to-github/sudo-mode.md +++ b/content/github/authenticating-to-github/sudo-mode.md @@ -6,6 +6,9 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - identity + - access management --- After you've performed a sudo-protected action, you'll only be asked to re-authenticate again after a few hours of inactivity. Every sudo-protected action resets this timer. diff --git a/content/github/authenticating-to-github/telling-git-about-your-signing-key.md b/content/github/authenticating-to-github/telling-git-about-your-signing-key.md index 70780cac45..5fab6b7ab9 100644 --- a/content/github/authenticating-to-github/telling-git-about-your-signing-key.md +++ b/content/github/authenticating-to-github/telling-git-about-your-signing-key.md @@ -1,6 +1,6 @@ --- title: Telling Git about your signing key -intro: "To sign commits locally, you need to inform Git that there's a GPG or X.509 key you'd like to use." +intro: 'To sign commits locally, you need to inform Git that there''s a GPG or X.509 key you''d like to use.' redirect_from: - /articles/telling-git-about-your-gpg-key/ - /articles/telling-git-about-your-signing-key @@ -8,6 +8,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- {% mac %} diff --git a/content/github/authenticating-to-github/testing-your-ssh-connection.md b/content/github/authenticating-to-github/testing-your-ssh-connection.md index 1413718434..167a477bb5 100644 --- a/content/github/authenticating-to-github/testing-your-ssh-connection.md +++ b/content/github/authenticating-to-github/testing-your-ssh-connection.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- Before testing your SSH connection, you should have: diff --git a/content/github/authenticating-to-github/troubleshooting-commit-signature-verification.md b/content/github/authenticating-to-github/troubleshooting-commit-signature-verification.md index eaf728188e..ae4ef0099e 100644 --- a/content/github/authenticating-to-github/troubleshooting-commit-signature-verification.md +++ b/content/github/authenticating-to-github/troubleshooting-commit-signature-verification.md @@ -9,5 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- diff --git a/content/github/authenticating-to-github/troubleshooting-ssh.md b/content/github/authenticating-to-github/troubleshooting-ssh.md index 6e0edc6822..a7d35a006e 100644 --- a/content/github/authenticating-to-github/troubleshooting-ssh.md +++ b/content/github/authenticating-to-github/troubleshooting-ssh.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- diff --git a/content/github/authenticating-to-github/updating-an-expired-gpg-key.md b/content/github/authenticating-to-github/updating-an-expired-gpg-key.md index 15a8a860a3..0d76efd0fc 100644 --- a/content/github/authenticating-to-github/updating-an-expired-gpg-key.md +++ b/content/github/authenticating-to-github/updating-an-expired-gpg-key.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- If your key is expired, you must [update the expiration](https://www.gnupg.org/gph/en/manual/c235.html#AEN328), export the new key, delete the expired key in your GitHub account, and [upload the new key to GitHub](/articles/adding-a-new-gpg-key-to-your-github-account/). Your previous commits and tags will show as verified, as long as the key meets all other verification requirements. diff --git a/content/github/authenticating-to-github/updating-your-github-access-credentials.md b/content/github/authenticating-to-github/updating-your-github-access-credentials.md index 75214d3ae8..121deadaeb 100644 --- a/content/github/authenticating-to-github/updating-your-github-access-credentials.md +++ b/content/github/authenticating-to-github/updating-your-github-access-credentials.md @@ -9,6 +9,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- {% if currentVersion != "github-ae@latest" %} diff --git a/content/github/authenticating-to-github/using-a-verified-email-address-in-your-gpg-key.md b/content/github/authenticating-to-github/using-a-verified-email-address-in-your-gpg-key.md index e215b0d4b5..f072a89dab 100644 --- a/content/github/authenticating-to-github/using-a-verified-email-address-in-your-gpg-key.md +++ b/content/github/authenticating-to-github/using-a-verified-email-address-in-your-gpg-key.md @@ -7,6 +7,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - identity + - access management --- {% if currentVersion == "free-pro-team@latest" %} diff --git a/content/github/authenticating-to-github/using-ssh-over-the-https-port.md b/content/github/authenticating-to-github/using-ssh-over-the-https-port.md index ba712f9d73..05f7043e78 100644 --- a/content/github/authenticating-to-github/using-ssh-over-the-https-port.md +++ b/content/github/authenticating-to-github/using-ssh-over-the-https-port.md @@ -5,6 +5,8 @@ redirect_from: - /articles/using-ssh-over-the-https-port versions: free-pro-team: '*' +topics: + - ssh --- {% tip %} diff --git a/content/github/authenticating-to-github/viewing-and-managing-your-active-saml-sessions.md b/content/github/authenticating-to-github/viewing-and-managing-your-active-saml-sessions.md index 4b3d9b9288..ce7b47ed3b 100644 --- a/content/github/authenticating-to-github/viewing-and-managing-your-active-saml-sessions.md +++ b/content/github/authenticating-to-github/viewing-and-managing-your-active-saml-sessions.md @@ -5,6 +5,8 @@ redirect_from: - /articles/viewing-and-managing-your-active-saml-sessions versions: free-pro-team: '*' +topics: + - sso --- {% data reusables.user_settings.access_settings %} @@ -24,4 +26,4 @@ versions: ### Further reading -- "[About authentication with SAML SSO](/github/authenticating-to-github/about-authentication-with-saml-single-sign-on)" \ No newline at end of file +- "[About authentication with SAML SSO](/github/authenticating-to-github/about-authentication-with-saml-single-sign-on)" diff --git a/content/github/authenticating-to-github/working-with-ssh-key-passphrases.md b/content/github/authenticating-to-github/working-with-ssh-key-passphrases.md index 81917a1cc1..859778b9eb 100644 --- a/content/github/authenticating-to-github/working-with-ssh-key-passphrases.md +++ b/content/github/authenticating-to-github/working-with-ssh-key-passphrases.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - ssh --- With SSH keys, if someone gains access to your computer, they also gain access to every system that uses that key. To add an extra layer of security, you can add a passphrase to your SSH key. You can use `ssh-agent` to securely save your passphrase so you don't have to reenter it. diff --git a/content/github/building-a-strong-community/about-community-management-and-moderation.md b/content/github/building-a-strong-community/about-community-management-and-moderation.md index 1e693282d9..f4a26afaa9 100644 --- a/content/github/building-a-strong-community/about-community-management-and-moderation.md +++ b/content/github/building-a-strong-community/about-community-management-and-moderation.md @@ -3,6 +3,8 @@ title: About community management and moderation intro: '{% data variables.product.prodname_dotcom %} offers tools that help repository maintainers establish and enforce standards of behavior in their communities on {% data variables.product.prodname_dotcom_the_website %}.' versions: free-pro-team: '*' +topics: + - community --- ### About community management and moderation diff --git a/content/github/building-a-strong-community/about-community-profiles-for-public-repositories.md b/content/github/building-a-strong-community/about-community-profiles-for-public-repositories.md index 5e1f3a28ef..5876ae99d6 100644 --- a/content/github/building-a-strong-community/about-community-profiles-for-public-repositories.md +++ b/content/github/building-a-strong-community/about-community-profiles-for-public-repositories.md @@ -6,6 +6,8 @@ redirect_from: - /articles/about-community-profiles-for-public-repositories versions: free-pro-team: '*' +topics: + - community --- The community profile checklist checks to see if a project includes recommended community health files, such as README, CODE_OF_CONDUCT, LICENSE, or CONTRIBUTING, in a supported location. For more information, see "[Accessing a project's community profile](/articles/accessing-a-project-s-community-profile)." diff --git a/content/github/building-a-strong-community/about-issue-and-pull-request-templates.md b/content/github/building-a-strong-community/about-issue-and-pull-request-templates.md index 8d8c0a7b0e..7f3ecabf3e 100644 --- a/content/github/building-a-strong-community/about-issue-and-pull-request-templates.md +++ b/content/github/building-a-strong-community/about-issue-and-pull-request-templates.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- After you create issue and pull request templates in your repository, contributors can use the templates to open issues or describe the proposed changes in their pull requests according to the repository's contributing guidelines. For more information about adding contributing guidelines to a repository, see "[Setting guidelines for repository contributors](/articles/setting-guidelines-for-repository-contributors)." diff --git a/content/github/building-a-strong-community/about-wikis.md b/content/github/building-a-strong-community/about-wikis.md index 6e0beec462..39ebce9237 100644 --- a/content/github/building-a-strong-community/about-wikis.md +++ b/content/github/building-a-strong-community/about-wikis.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- Every {% data variables.product.product_name %} repository comes equipped with a section for hosting documentation, called a wiki. You can use your repository's wiki to share long-form content about your project, such as how to use it, how you designed it, or its core principles. A README file quickly tells what your project can do, while you can use a wiki to provide additional documentation. For more information, see "[About READMEs](/articles/about-readmes)." diff --git a/content/github/building-a-strong-community/accessing-a-projects-community-profile.md b/content/github/building-a-strong-community/accessing-a-projects-community-profile.md index d145d7dd83..2b20b15381 100644 --- a/content/github/building-a-strong-community/accessing-a-projects-community-profile.md +++ b/content/github/building-a-strong-community/accessing-a-projects-community-profile.md @@ -6,6 +6,8 @@ redirect_from: - /articles/accessing-a-projects-community-profile versions: free-pro-team: '*' +topics: + - community --- {% data reusables.repositories.navigate-to-repo %} diff --git a/content/github/building-a-strong-community/adding-a-code-of-conduct-to-your-project.md b/content/github/building-a-strong-community/adding-a-code-of-conduct-to-your-project.md index aa7d99e071..c83fcd6804 100644 --- a/content/github/building-a-strong-community/adding-a-code-of-conduct-to-your-project.md +++ b/content/github/building-a-strong-community/adding-a-code-of-conduct-to-your-project.md @@ -5,6 +5,8 @@ redirect_from: - /articles/adding-a-code-of-conduct-to-your-project versions: free-pro-team: '*' +topics: + - community --- A *code of conduct* defines standards for how to engage in a community. It signals an inclusive environment that respects all contributions. It also outlines procedures for addressing problems between members of your project's community. For more information on why a code of conduct defines standards and expectations for how to engage in a community, see the [Open Source Guide](https://opensource.guide/code-of-conduct/). diff --git a/content/github/building-a-strong-community/adding-a-license-to-a-repository.md b/content/github/building-a-strong-community/adding-a-license-to-a-repository.md index 05d1c89413..b69cd607cd 100644 --- a/content/github/building-a-strong-community/adding-a-license-to-a-repository.md +++ b/content/github/building-a-strong-community/adding-a-license-to-a-repository.md @@ -6,6 +6,8 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - community --- If you include a detectable license in your repository, people who visit your repository will see it at the top of the repository page. To read the entire license file, click the license name. diff --git a/content/github/building-a-strong-community/adding-or-editing-wiki-pages.md b/content/github/building-a-strong-community/adding-or-editing-wiki-pages.md index 62ae605146..738e36f1ac 100644 --- a/content/github/building-a-strong-community/adding-or-editing-wiki-pages.md +++ b/content/github/building-a-strong-community/adding-or-editing-wiki-pages.md @@ -12,6 +12,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- ### Adding wiki pages diff --git a/content/github/building-a-strong-community/adding-support-resources-to-your-project.md b/content/github/building-a-strong-community/adding-support-resources-to-your-project.md index 7fb6d57013..c16e886001 100644 --- a/content/github/building-a-strong-community/adding-support-resources-to-your-project.md +++ b/content/github/building-a-strong-community/adding-support-resources-to-your-project.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- To direct people to specific support resources, you can add a SUPPORT file to your repository's root, `docs`, or `.github` folder. When someone creates an issue in your repository, they will see a link to your project's SUPPORT file. diff --git a/content/github/building-a-strong-community/blocking-a-user-from-your-organization.md b/content/github/building-a-strong-community/blocking-a-user-from-your-organization.md index 855f81f777..7a4a51f999 100644 --- a/content/github/building-a-strong-community/blocking-a-user-from-your-organization.md +++ b/content/github/building-a-strong-community/blocking-a-user-from-your-organization.md @@ -5,6 +5,8 @@ redirect_from: - /articles/blocking-a-user-from-your-organization versions: free-pro-team: '*' +topics: + - community --- You can block a user from within your organization's settings or from a specific comment made by the user. When you block a user in a comment, you can choose to send the user a notification explaining that they were blocked and why. Otherwise, the user is not directly notified that you've blocked them. Blocked users can still delete their existing content. diff --git a/content/github/building-a-strong-community/blocking-a-user-from-your-personal-account.md b/content/github/building-a-strong-community/blocking-a-user-from-your-personal-account.md index 77ef77338a..c2dc55ccef 100644 --- a/content/github/building-a-strong-community/blocking-a-user-from-your-personal-account.md +++ b/content/github/building-a-strong-community/blocking-a-user-from-your-personal-account.md @@ -5,6 +5,8 @@ redirect_from: - /articles/blocking-a-user-from-your-personal-account versions: free-pro-team: '*' +topics: + - community --- ### About blocking users diff --git a/content/github/building-a-strong-community/changing-access-permissions-for-wikis.md b/content/github/building-a-strong-community/changing-access-permissions-for-wikis.md index 3cd1846dba..f8cc461171 100644 --- a/content/github/building-a-strong-community/changing-access-permissions-for-wikis.md +++ b/content/github/building-a-strong-community/changing-access-permissions-for-wikis.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- {% data reusables.repositories.navigate-to-repo %} diff --git a/content/github/building-a-strong-community/configuring-issue-templates-for-your-repository.md b/content/github/building-a-strong-community/configuring-issue-templates-for-your-repository.md index 13df72ab27..d8686332e6 100644 --- a/content/github/building-a-strong-community/configuring-issue-templates-for-your-repository.md +++ b/content/github/building-a-strong-community/configuring-issue-templates-for-your-repository.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- {% if currentVersion == "free-pro-team@latest" or enterpriseServerVersions contains currentVersion %} diff --git a/content/github/building-a-strong-community/creating-a-default-community-health-file.md b/content/github/building-a-strong-community/creating-a-default-community-health-file.md index c4157ac34c..373b288d0e 100644 --- a/content/github/building-a-strong-community/creating-a-default-community-health-file.md +++ b/content/github/building-a-strong-community/creating-a-default-community-health-file.md @@ -7,6 +7,8 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - community --- ### About default community health files diff --git a/content/github/building-a-strong-community/creating-a-footer-or-sidebar-for-your-wiki.md b/content/github/building-a-strong-community/creating-a-footer-or-sidebar-for-your-wiki.md index 5e725a84aa..81a9895472 100644 --- a/content/github/building-a-strong-community/creating-a-footer-or-sidebar-for-your-wiki.md +++ b/content/github/building-a-strong-community/creating-a-footer-or-sidebar-for-your-wiki.md @@ -10,6 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- ### Creating a footer diff --git a/content/github/building-a-strong-community/creating-a-pull-request-template-for-your-repository.md b/content/github/building-a-strong-community/creating-a-pull-request-template-for-your-repository.md index 29ff888262..a0098f3058 100644 --- a/content/github/building-a-strong-community/creating-a-pull-request-template-for-your-repository.md +++ b/content/github/building-a-strong-community/creating-a-pull-request-template-for-your-repository.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- For more information, see "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates)." diff --git a/content/github/building-a-strong-community/disabling-wikis.md b/content/github/building-a-strong-community/disabling-wikis.md index 1dc9587157..400b502f0e 100644 --- a/content/github/building-a-strong-community/disabling-wikis.md +++ b/content/github/building-a-strong-community/disabling-wikis.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- When you turn off a wiki, the content is hidden, but not erased. If you choose to re-enable wikis later, your previous pages will be restored. diff --git a/content/github/building-a-strong-community/documenting-your-project-with-wikis.md b/content/github/building-a-strong-community/documenting-your-project-with-wikis.md index db5793db24..b653151038 100644 --- a/content/github/building-a-strong-community/documenting-your-project-with-wikis.md +++ b/content/github/building-a-strong-community/documenting-your-project-with-wikis.md @@ -11,5 +11,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- diff --git a/content/github/building-a-strong-community/editing-wiki-content.md b/content/github/building-a-strong-community/editing-wiki-content.md index d592597dd6..57e1e83f5e 100644 --- a/content/github/building-a-strong-community/editing-wiki-content.md +++ b/content/github/building-a-strong-community/editing-wiki-content.md @@ -15,6 +15,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- ### Adding links diff --git a/content/github/building-a-strong-community/encouraging-helpful-contributions-to-your-project-with-labels.md b/content/github/building-a-strong-community/encouraging-helpful-contributions-to-your-project-with-labels.md index 95c92f2ede..54e3f5c09a 100644 --- a/content/github/building-a-strong-community/encouraging-helpful-contributions-to-your-project-with-labels.md +++ b/content/github/building-a-strong-community/encouraging-helpful-contributions-to-your-project-with-labels.md @@ -6,6 +6,8 @@ redirect_from: - /articles/helping-new-contributors-find-your-project-with-labels versions: free-pro-team: '*' +topics: + - community --- You can apply the `good first issue` label to issues in your public repository so that people can find them when searching by labels. For more information about searching by labels, see "[Searching issues and pull requests](/articles/searching-issues-and-pull-requests/#search-by-label)." diff --git a/content/github/building-a-strong-community/index.md b/content/github/building-a-strong-community/index.md index 6e81525948..96db2f1924 100644 --- a/content/github/building-a-strong-community/index.md +++ b/content/github/building-a-strong-community/index.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- diff --git a/content/github/building-a-strong-community/limiting-interactions-for-your-user-account.md b/content/github/building-a-strong-community/limiting-interactions-for-your-user-account.md index 6c01ed2e08..b04377b01c 100644 --- a/content/github/building-a-strong-community/limiting-interactions-for-your-user-account.md +++ b/content/github/building-a-strong-community/limiting-interactions-for-your-user-account.md @@ -1,9 +1,11 @@ --- title: Limiting interactions for your user account -intro: 'You can temporarily enforce a period of limited activity for certain users in all public repositories owned by your user account.' +intro: You can temporarily enforce a period of limited activity for certain users in all public repositories owned by your user account. versions: free-pro-team: '*' permissions: Anyone can limit interactions for their own user account. +topics: + - community --- ### About temporary interaction limits @@ -24,4 +26,4 @@ You can also block users. For more information, see "[Blocking a user from your 1. In your user settings sidebar, under "Moderation settings", click **Interaction limits**. !["Interaction limits" tab in the user settings sidebar](/assets/images/help/settings/settings-sidebar-interaction-limits.png) {% data reusables.community.set-interaction-limit %} - ![Temporary interaction limit options](/assets/images/help/settings/user-account-temporary-interaction-limits-options.png) \ No newline at end of file + ![Temporary interaction limit options](/assets/images/help/settings/user-account-temporary-interaction-limits-options.png) diff --git a/content/github/building-a-strong-community/limiting-interactions-in-your-organization.md b/content/github/building-a-strong-community/limiting-interactions-in-your-organization.md index 8c96c26302..d43d4be730 100644 --- a/content/github/building-a-strong-community/limiting-interactions-in-your-organization.md +++ b/content/github/building-a-strong-community/limiting-interactions-in-your-organization.md @@ -1,12 +1,14 @@ --- title: Limiting interactions in your organization -intro: 'You can temporarily enforce a period of limited activity for certain users in all public repositories owned by your organization.' +intro: You can temporarily enforce a period of limited activity for certain users in all public repositories owned by your organization. redirect_from: - /github/setting-up-and-managing-organizations-and-teams/limiting-interactions-in-your-organization - /articles/limiting-interactions-in-your-organization versions: free-pro-team: '*' permissions: Organization owners can limit interactions in an organization. +topics: + - community --- ### About temporary interaction limits diff --git a/content/github/building-a-strong-community/limiting-interactions-in-your-repository.md b/content/github/building-a-strong-community/limiting-interactions-in-your-repository.md index da85594b43..3b7219a4c1 100644 --- a/content/github/building-a-strong-community/limiting-interactions-in-your-repository.md +++ b/content/github/building-a-strong-community/limiting-interactions-in-your-repository.md @@ -1,12 +1,14 @@ --- title: Limiting interactions in your repository -intro: 'You can temporarily enforce a period of limited activity for certain users on a public repository.' +intro: You can temporarily enforce a period of limited activity for certain users on a public repository. redirect_from: - /articles/limiting-interactions-with-your-repository/ - /articles/limiting-interactions-in-your-repository versions: free-pro-team: '*' permissions: People with admin permissions to a repository can temporarily limit interactions in that repository. +topics: + - community --- ### About temporary interaction limits diff --git a/content/github/building-a-strong-community/locking-conversations.md b/content/github/building-a-strong-community/locking-conversations.md index 7f384471b5..2035ce49d2 100644 --- a/content/github/building-a-strong-community/locking-conversations.md +++ b/content/github/building-a-strong-community/locking-conversations.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- It's appropriate to lock a conversation when the entire conversation is not constructive or violates your community's code of conduct{% if currentVersion == "free-pro-team@latest" %} or GitHub's [Community Guidelines](/articles/github-community-guidelines){% endif %}. When you lock a conversation, you can also specify a reason, which is publicly visible. diff --git a/content/github/building-a-strong-community/maintaining-your-safety-on-github.md b/content/github/building-a-strong-community/maintaining-your-safety-on-github.md index 5ace725492..72e9dbb00a 100644 --- a/content/github/building-a-strong-community/maintaining-your-safety-on-github.md +++ b/content/github/building-a-strong-community/maintaining-your-safety-on-github.md @@ -9,5 +9,7 @@ redirect_from: - /articles/encouraging-positive-contributions-to-your-project versions: free-pro-team: '*' +topics: + - community --- diff --git a/content/github/building-a-strong-community/managing-disruptive-comments.md b/content/github/building-a-strong-community/managing-disruptive-comments.md index 16acb1360c..9b41dd1009 100644 --- a/content/github/building-a-strong-community/managing-disruptive-comments.md +++ b/content/github/building-a-strong-community/managing-disruptive-comments.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- ### Hiding a comment diff --git a/content/github/building-a-strong-community/managing-how-contributors-report-abuse-in-your-organizations-repository.md b/content/github/building-a-strong-community/managing-how-contributors-report-abuse-in-your-organizations-repository.md index de50df47da..2bbba1c9fe 100644 --- a/content/github/building-a-strong-community/managing-how-contributors-report-abuse-in-your-organizations-repository.md +++ b/content/github/building-a-strong-community/managing-how-contributors-report-abuse-in-your-organizations-repository.md @@ -3,6 +3,8 @@ title: Managing how contributors report abuse in your organization's repository intro: You can allow contributors to report disruptive behavior directly to repository maintainers. versions: free-pro-team: '*' +topics: + - community --- Anyone with admin permissions to a repository can manage how contributors report abuse in the repository. diff --git a/content/github/building-a-strong-community/managing-reported-content-in-your-organizations-repository.md b/content/github/building-a-strong-community/managing-reported-content-in-your-organizations-repository.md index 4dc4216243..790af089e2 100644 --- a/content/github/building-a-strong-community/managing-reported-content-in-your-organizations-repository.md +++ b/content/github/building-a-strong-community/managing-reported-content-in-your-organizations-repository.md @@ -3,6 +3,8 @@ title: Managing reported content in your organization's repository intro: 'After a contributor reports disruptive content in a repository, repository maintainers can view and manage the report.' versions: free-pro-team: '*' +topics: + - community --- Anyone with admin permissions to a repository can view and manage reported content for the repository. diff --git a/content/github/building-a-strong-community/manually-creating-a-single-issue-template-for-your-repository.md b/content/github/building-a-strong-community/manually-creating-a-single-issue-template-for-your-repository.md index 8cb5adf5ce..3a22ec0bd1 100644 --- a/content/github/building-a-strong-community/manually-creating-a-single-issue-template-for-your-repository.md +++ b/content/github/building-a-strong-community/manually-creating-a-single-issue-template-for-your-repository.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- {% data reusables.repositories.legacy-issue-template-tip %} diff --git a/content/github/building-a-strong-community/moderating-comments-and-conversations.md b/content/github/building-a-strong-community/moderating-comments-and-conversations.md index 6b02dc83f3..68955777c3 100644 --- a/content/github/building-a-strong-community/moderating-comments-and-conversations.md +++ b/content/github/building-a-strong-community/moderating-comments-and-conversations.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- diff --git a/content/github/building-a-strong-community/reporting-abuse-or-spam.md b/content/github/building-a-strong-community/reporting-abuse-or-spam.md index e33cd7be4c..5570339879 100644 --- a/content/github/building-a-strong-community/reporting-abuse-or-spam.md +++ b/content/github/building-a-strong-community/reporting-abuse-or-spam.md @@ -5,6 +5,8 @@ redirect_from: - /articles/reporting-abuse-or-spam versions: free-pro-team: '*' +topics: + - community --- Owners, collaborators, prior contributors, and people with write access can report issues, pull requests, and comments on issues, pull requests, and commits. Anyone can report apps in {% data variables.product.prodname_marketplace %}. diff --git a/content/github/building-a-strong-community/setting-guidelines-for-repository-contributors.md b/content/github/building-a-strong-community/setting-guidelines-for-repository-contributors.md index aca5e9c2ff..c529f52f84 100644 --- a/content/github/building-a-strong-community/setting-guidelines-for-repository-contributors.md +++ b/content/github/building-a-strong-community/setting-guidelines-for-repository-contributors.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- To help your project contributors do good work, you can add a file with contribution guidelines to your project repository's root, `docs`, or `.github` folder. When someone opens a pull request or creates an issue, they will see a link to that file. diff --git a/content/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions.md b/content/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions.md index 4779c2e8c9..bab3c8d57f 100644 --- a/content/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions.md +++ b/content/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions.md @@ -9,5 +9,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- diff --git a/content/github/building-a-strong-community/tracking-changes-in-a-comment.md b/content/github/building-a-strong-community/tracking-changes-in-a-comment.md index 0af05d4355..9ddaa0094d 100644 --- a/content/github/building-a-strong-community/tracking-changes-in-a-comment.md +++ b/content/github/building-a-strong-community/tracking-changes-in-a-comment.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- ### Viewing a comment's edit history details diff --git a/content/github/building-a-strong-community/unblocking-a-user-from-your-organization.md b/content/github/building-a-strong-community/unblocking-a-user-from-your-organization.md index 616b702424..f0b25a83de 100644 --- a/content/github/building-a-strong-community/unblocking-a-user-from-your-organization.md +++ b/content/github/building-a-strong-community/unblocking-a-user-from-your-organization.md @@ -5,6 +5,8 @@ redirect_from: - /articles/unblocking-a-user-from-your-organization versions: free-pro-team: '*' +topics: + - community --- After unblocking a user from your organization, they'll be able to contribute to your organization's repositories. diff --git a/content/github/building-a-strong-community/unblocking-a-user-from-your-personal-account.md b/content/github/building-a-strong-community/unblocking-a-user-from-your-personal-account.md index f62dd1c2ac..49e3481749 100644 --- a/content/github/building-a-strong-community/unblocking-a-user-from-your-personal-account.md +++ b/content/github/building-a-strong-community/unblocking-a-user-from-your-personal-account.md @@ -5,6 +5,8 @@ redirect_from: - /articles/unblocking-a-user-from-your-personal-account versions: free-pro-team: '*' +topics: + - community --- When you unblock a user, they'll be able to invite you to be a collaborator to their repositories. If they [@mention you](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams) anywhere on GitHub, you'll receive notifications. diff --git a/content/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests.md b/content/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests.md index 3435c8fa32..65848c631a 100644 --- a/content/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests.md +++ b/content/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests.md @@ -10,5 +10,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- diff --git a/content/github/building-a-strong-community/viewing-a-wikis-history-of-changes.md b/content/github/building-a-strong-community/viewing-a-wikis-history-of-changes.md index caaad4013d..8af76dfd85 100644 --- a/content/github/building-a-strong-community/viewing-a-wikis-history-of-changes.md +++ b/content/github/building-a-strong-community/viewing-a-wikis-history-of-changes.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - community --- ### Viewing wiki history diff --git a/content/github/building-a-strong-community/viewing-users-who-are-blocked-from-your-organization.md b/content/github/building-a-strong-community/viewing-users-who-are-blocked-from-your-organization.md index 047ea789cc..27efafed8f 100644 --- a/content/github/building-a-strong-community/viewing-users-who-are-blocked-from-your-organization.md +++ b/content/github/building-a-strong-community/viewing-users-who-are-blocked-from-your-organization.md @@ -5,6 +5,8 @@ redirect_from: - /articles/viewing-users-who-are-blocked-from-your-organization versions: free-pro-team: '*' +topics: + - community --- {% data reusables.profile.access_profile %} diff --git a/content/github/building-a-strong-community/viewing-users-youve-blocked-from-your-personal-account.md b/content/github/building-a-strong-community/viewing-users-youve-blocked-from-your-personal-account.md index 0f3bae172f..a5866bc295 100644 --- a/content/github/building-a-strong-community/viewing-users-youve-blocked-from-your-personal-account.md +++ b/content/github/building-a-strong-community/viewing-users-youve-blocked-from-your-personal-account.md @@ -6,6 +6,8 @@ redirect_from: - /articles/viewing-users-youve-blocked-from-your-personal-account versions: free-pro-team: '*' +topics: + - community --- {% data reusables.user_settings.access_settings %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-branches.md b/content/github/collaborating-with-issues-and-pull-requests/about-branches.md index 14595a111a..016cc6cc7a 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-branches.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-branches.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-collaborative-development-models.md b/content/github/collaborating-with-issues-and-pull-requests/about-collaborative-development-models.md index 7325304482..f9cec4d87c 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-collaborative-development-models.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-collaborative-development-models.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- There are two main types of development models with which you'd use pull requests. In the *fork and pull model*, anyone can fork an existing repository and push changes to their personal fork. You do not need permission to the source repository to push to a user-owned fork. The changes can be pulled into the source repository by the project maintainer. When you open a pull request proposing changes from your user-owned fork to a branch in the source (upstream) repository, you can allow anyone with push access to the upstream repository to make changes to your pull request. This model is popular with open source projects as it reduces the amount of friction for new contributors and allows people to work independently without upfront coordination. diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-comparing-branches-in-pull-requests.md b/content/github/collaborating-with-issues-and-pull-requests/about-comparing-branches-in-pull-requests.md index 7e07ded2be..10c3ea7475 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-comparing-branches-in-pull-requests.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-comparing-branches-in-pull-requests.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- {% note %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md b/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md index 9ead9a73f9..c88963f9b0 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### Discussions on {% data variables.product.product_name %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-forks.md b/content/github/collaborating-with-issues-and-pull-requests/about-forks.md index c7acbb201e..a98a7988d3 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-forks.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-forks.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- Forking a repository is similar to copying a repository, with two major differences: diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-merge-conflicts.md b/content/github/collaborating-with-issues-and-pull-requests/about-merge-conflicts.md index 8e10ed8b96..620828529a 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-merge-conflicts.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-merge-conflicts.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- Git can often resolve differences between branches and merge them automatically. Usually, the changes are on different lines, or even in different files, which makes the merge simple for computers to understand. However, sometimes there are competing changes that Git can't resolve without your help. Often, merge conflicts happen when people make different changes to the same line of the same file, or when one person edits a file and another person deletes the same file. diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges.md b/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges.md index 140097bc99..7c0a215180 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- {% data reusables.pull_requests.default_merge_option %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews.md b/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews.md index cd9d144824..93a6a0374d 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### About pull request reviews diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-pull-requests.md b/content/github/collaborating-with-issues-and-pull-requests/about-pull-requests.md index ffba2f58cf..e157d032a5 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-pull-requests.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-pull-requests.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### About pull requests diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-status-checks.md b/content/github/collaborating-with-issues-and-pull-requests/about-status-checks.md index 4723d04971..cf4fb304a9 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/about-status-checks.md +++ b/content/github/collaborating-with-issues-and-pull-requests/about-status-checks.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- Status checks are based on external processes, such as continuous integration builds, which run for each push you make to a repository. You can see the *pending*, *passing*, or *failing* state of status checks next to individual commits in your pull request. diff --git a/content/github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts.md b/content/github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts.md index 496b92edd0..bc9829b98f 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts.md +++ b/content/github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- diff --git a/content/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md index e84de9cf65..45d42c07a0 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ b/content/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- Only pull request authors can give upstream repository maintainers, or those with push access to the upstream repository, permission to make commits to their pull request's compare branch in a user-owned fork. To learn more about upstream repositories, see "[About forks](/articles/about-forks)." diff --git a/content/github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews.md b/content/github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews.md index a6854818c4..04caa5fe36 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews.md +++ b/content/github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- For more information about required reviews, see "[About protected branches](/github/administering-a-repository/about-protected-branches#require-pull-request-reviews-before-merging)." diff --git a/content/github/collaborating-with-issues-and-pull-requests/automatically-merging-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/automatically-merging-a-pull-request.md index 3cfba31247..12d2eb2b92 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/automatically-merging-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/automatically-merging-a-pull-request.md @@ -1,11 +1,13 @@ --- title: Automatically merging a pull request -intro: 'You can increase development velocity by enabling auto-merge for a pull request so that the pull request will merge automatically when all merge requirements are met.' +intro: You can increase development velocity by enabling auto-merge for a pull request so that the pull request will merge automatically when all merge requirements are met. product: '{% data reusables.gated-features.auto-merge %}' versions: free-pro-team: '*' enterprise-server: '>=3.1' github-ae: '*' +topics: + - pull requests --- ### About auto-merge diff --git a/content/github/collaborating-with-issues-and-pull-requests/changing-the-base-branch-of-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/changing-the-base-branch-of-a-pull-request.md index 2e5cf86f52..dc5773a4dd 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/changing-the-base-branch-of-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/changing-the-base-branch-of-a-pull-request.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- {% warning %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request.md index c8c46903c4..5684ef55c0 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### Marking a pull request as ready for review diff --git a/content/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally.md b/content/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally.md index 4ed1a97a60..edb7dbdb90 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally.md +++ b/content/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- {% note %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/closing-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/closing-a-pull-request.md index a6acb76c97..cfb5b3c972 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/closing-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/closing-a-pull-request.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- {% tip %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features.md b/content/github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features.md index e185d0a0cf..1d4bdbd223 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features.md +++ b/content/github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features.md @@ -9,5 +9,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- diff --git a/content/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request.md index 2f109a79d6..d40da420da 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request.md @@ -10,6 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### About pull request comments diff --git a/content/github/collaborating-with-issues-and-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/github/collaborating-with-issues-and-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md index 0f38fb1a00..fe0ffb4d7a 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ b/content/github/collaborating-with-issues-and-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- You can only make commits on pull request branches that: diff --git a/content/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork.md b/content/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork.md index 357da89aed..8808971cdc 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork.md +++ b/content/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- {% data reusables.command_line.open_the_multi_os_terminal %} 2. List the current configured remote repository for your fork. diff --git a/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork.md b/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork.md index 0aebcf7f57..a6de47b348 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork.md +++ b/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- You can also give the upstream repository's maintainers permission to push commits to a user-owned fork. If your pull request compares your topic branch with a branch in the upstream repository as the base branch, then your topic branch is also called the compare branch of the pull request. For more information about pull request branches, including examples, see "[Creating a pull request](/articles/creating-a-pull-request/#changing-the-branch-range-and-destination-repository)." diff --git a/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request.md index 501339a84f..15326fe298 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- Anyone with read permissions to a repository can create a pull request, but you must have write permissions to create a branch. If you want to create a new branch for your pull request and don't have write permissions to the repository, you can fork the repository first. For more information, see "[Creating a pull request from a fork](/articles/creating-a-pull-request-from-a-fork)" and "[About forks](/articles/about-forks)." diff --git a/content/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository.md b/content/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository.md index 4f0c487c12..c7618f3507 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository.md +++ b/content/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### Creating a branch diff --git a/content/github/collaborating-with-issues-and-pull-requests/dismissing-a-pull-request-review.md b/content/github/collaborating-with-issues-and-pull-requests/dismissing-a-pull-request-review.md index 0f52e396f7..9a7a0aacc5 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/dismissing-a-pull-request-review.md +++ b/content/github/collaborating-with-issues-and-pull-requests/dismissing-a-pull-request-review.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- {% data reusables.pull_requests.dismiss_review %} @@ -26,4 +28,4 @@ This changes the status of the review to a review comment. When you dismiss a re - "[About pull request reviews](/articles/about-pull-request-reviews)" - "[Reviewing proposed changes in a pull request](/articles/reviewing-proposed-changes-in-a-pull-request)" -- "[About protected branches](/github/administering-a-repository/about-protected-branches#require-pull-request-reviews-before-merging)" \ No newline at end of file +- "[About protected branches](/github/administering-a-repository/about-protected-branches#require-pull-request-reviews-before-merging)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/filtering-files-in-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/filtering-files-in-a-pull-request.md index 8abfc72cb1..0f50ae18a7 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/filtering-files-in-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/filtering-files-in-a-pull-request.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- You can filter files in a pull request by file extension type, such as `.html` or `.js`, lack of an extension, code ownership, or dotfiles. diff --git a/content/github/collaborating-with-issues-and-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md index 5b1ea925dc..4fe786ab06 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- Anyone with read access to a repository can see a summary list of the functions and methods changes in certain files of a pull request. diff --git a/content/github/collaborating-with-issues-and-pull-requests/github-flow.md b/content/github/collaborating-with-issues-and-pull-requests/github-flow.md index b94297ab44..9aceb77d6c 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/github-flow.md +++ b/content/github/collaborating-with-issues-and-pull-requests/github-flow.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### Following the GitHub flow diff --git a/content/github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request.md index 0caba244c6..d6d564c409 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- diff --git a/content/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request.md index 68bcb96e4a..b8db6db125 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### Applying suggested changes diff --git a/content/github/collaborating-with-issues-and-pull-requests/index.md b/content/github/collaborating-with-issues-and-pull-requests/index.md index 1e666ca019..51e6d15485 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/index.md +++ b/content/github/collaborating-with-issues-and-pull-requests/index.md @@ -11,6 +11,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- diff --git a/content/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request.md index 876784f7cf..ffac83495b 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### About pull request merges diff --git a/content/github/collaborating-with-issues-and-pull-requests/merging-an-upstream-repository-into-your-fork.md b/content/github/collaborating-with-issues-and-pull-requests/merging-an-upstream-repository-into-your-fork.md index 4463aa1477..d74e66d01c 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/merging-an-upstream-repository-into-your-fork.md +++ b/content/github/collaborating-with-issues-and-pull-requests/merging-an-upstream-repository-into-your-fork.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- {% data reusables.command_line.open_the_multi_os_terminal %} 2. Change the current working directory to your local project. diff --git a/content/github/collaborating-with-issues-and-pull-requests/overview.md b/content/github/collaborating-with-issues-and-pull-requests/overview.md index 816072556f..be470cec0b 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/overview.md +++ b/content/github/collaborating-with-issues-and-pull-requests/overview.md @@ -6,5 +6,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- diff --git a/content/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests.md b/content/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests.md index 913990858c..efe90d1598 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests.md +++ b/content/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- diff --git a/content/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review.md b/content/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review.md index 65ebb3844c..72ba7b1693 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review.md +++ b/content/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- Owners and collaborators on a repository owned by a user account can assign pull request reviews. Organization members with triage permissions to a repository can assign a pull request review. diff --git a/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github.md b/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github.md index ec47c6933b..a423d69817 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github.md +++ b/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- You can only resolve merge conflicts on {% data variables.product.product_name %} that are caused by competing line changes, such as when people make different changes to the same line of the same file on different branches in your Git repository. For all other types of merge conflicts, you must resolve the conflict locally on the command line. For more information, see "[Resolving a merge conflict using the command line](/articles/resolving-a-merge-conflict-using-the-command-line/)." diff --git a/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line.md b/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line.md index 5dae3a1540..f97a0aa9fb 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line.md +++ b/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- Merge conflicts occur when competing changes are made to the same line of a file, or when one person edits a file and another person deletes the same file. For more information, see "[About merge conflicts](/articles/about-merge-conflicts/)." diff --git a/content/github/collaborating-with-issues-and-pull-requests/reverting-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/reverting-a-pull-request.md index dd7b4b5df1..2eeeb21d67 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/reverting-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/reverting-a-pull-request.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### About reverting a pull request diff --git a/content/github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests.md b/content/github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests.md index 83cbe91549..f0b03a1aae 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests.md +++ b/content/github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests.md @@ -9,5 +9,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- diff --git a/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md index 2f68164e62..f925a1ee23 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md @@ -3,6 +3,8 @@ title: Reviewing dependency changes in a pull request intro: 'If a pull request contains changes to dependencies, you can view a summary of what has changed and whether there are known vulnerabilities in any of the dependencies.' versions: free-pro-team: '*' +topics: + - pull requests --- {% note %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request.md index efecceace8..0abbfff562 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- ### About reviewing pull requests diff --git a/content/github/collaborating-with-issues-and-pull-requests/syncing-a-fork.md b/content/github/collaborating-with-issues-and-pull-requests/syncing-a-fork.md index affc3dd844..941f9b9da1 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/syncing-a-fork.md +++ b/content/github/collaborating-with-issues-and-pull-requests/syncing-a-fork.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- Before you can sync your fork with an upstream repository, you must [configure a remote that points to the upstream repository](/articles/configuring-a-remote-for-a-fork) in Git. diff --git a/content/github/collaborating-with-issues-and-pull-requests/viewing-a-pull-request-review.md b/content/github/collaborating-with-issues-and-pull-requests/viewing-a-pull-request-review.md index 6beac48895..7eab837b12 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/viewing-a-pull-request-review.md +++ b/content/github/collaborating-with-issues-and-pull-requests/viewing-a-pull-request-review.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- {% data reusables.search.requested_reviews_search %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md b/content/github/collaborating-with-issues-and-pull-requests/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md index 28d3dee2e5..563ad76cfb 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md +++ b/content/github/collaborating-with-issues-and-pull-requests/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- {% data reusables.repositories.deleted_forks_from_private_repositories_warning %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/working-with-forks.md b/content/github/collaborating-with-issues-and-pull-requests/working-with-forks.md index fef659dd91..0fca472b8f 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/working-with-forks.md +++ b/content/github/collaborating-with-issues-and-pull-requests/working-with-forks.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests --- diff --git a/content/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github.md b/content/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github.md index 3b9fb08f27..2df075cbef 100644 --- a/content/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github.md +++ b/content/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github.md @@ -5,6 +5,8 @@ redirect_from: - /articles/about-archiving-content-and-data-on-github versions: free-pro-team: '*' +topics: + - repositories --- ### Persistence of public repositories diff --git a/content/github/creating-cloning-and-archiving-repositories/about-archiving-repositories.md b/content/github/creating-cloning-and-archiving-repositories/about-archiving-repositories.md index 51d0fc1e32..829e7fffa7 100644 --- a/content/github/creating-cloning-and-archiving-repositories/about-archiving-repositories.md +++ b/content/github/creating-cloning-and-archiving-repositories/about-archiving-repositories.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% if currentVersion == "free-pro-team@latest" %} diff --git a/content/github/creating-cloning-and-archiving-repositories/about-code-owners.md b/content/github/creating-cloning-and-archiving-repositories/about-code-owners.md index c9da88109f..c65f2577a1 100644 --- a/content/github/creating-cloning-and-archiving-repositories/about-code-owners.md +++ b/content/github/creating-cloning-and-archiving-repositories/about-code-owners.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- People with admin or owner permissions can set up a CODEOWNERS file in a repository. diff --git a/content/github/creating-cloning-and-archiving-repositories/about-readmes.md b/content/github/creating-cloning-and-archiving-repositories/about-readmes.md index 2e65dc8587..c11e0278a7 100644 --- a/content/github/creating-cloning-and-archiving-repositories/about-readmes.md +++ b/content/github/creating-cloning-and-archiving-repositories/about-readmes.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### About READMEs diff --git a/content/github/creating-cloning-and-archiving-repositories/about-repositories.md b/content/github/creating-cloning-and-archiving-repositories/about-repositories.md index 214d30606e..87e8cbf1fd 100644 --- a/content/github/creating-cloning-and-archiving-repositories/about-repositories.md +++ b/content/github/creating-cloning-and-archiving-repositories/about-repositories.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- You can own repositories individually, or you can share ownership of repositories with other people in an organization. diff --git a/content/github/creating-cloning-and-archiving-repositories/about-repository-languages.md b/content/github/creating-cloning-and-archiving-repositories/about-repository-languages.md index 94d1f82eb3..2fde93a169 100644 --- a/content/github/creating-cloning-and-archiving-repositories/about-repository-languages.md +++ b/content/github/creating-cloning-and-archiving-repositories/about-repository-languages.md @@ -12,6 +12,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% data variables.product.product_name %} uses the open source [Linguist library](https://github.com/github/linguist) to determine file languages for syntax highlighting and repository statistics. Language statistics will update after you push changes to your default branch. diff --git a/content/github/creating-cloning-and-archiving-repositories/about-repository-visibility.md b/content/github/creating-cloning-and-archiving-repositories/about-repository-visibility.md index 9e2fc6a4ec..722ababce5 100644 --- a/content/github/creating-cloning-and-archiving-repositories/about-repository-visibility.md +++ b/content/github/creating-cloning-and-archiving-repositories/about-repository-visibility.md @@ -5,6 +5,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### About repository visibility diff --git a/content/github/creating-cloning-and-archiving-repositories/archiving-a-github-repository.md b/content/github/creating-cloning-and-archiving-repositories/archiving-a-github-repository.md index bb9d9e01a7..39ef8ed46e 100644 --- a/content/github/creating-cloning-and-archiving-repositories/archiving-a-github-repository.md +++ b/content/github/creating-cloning-and-archiving-repositories/archiving-a-github-repository.md @@ -10,5 +10,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/creating-cloning-and-archiving-repositories/archiving-repositories.md b/content/github/creating-cloning-and-archiving-repositories/archiving-repositories.md index 8a8f7b9bdf..e7d866a63b 100644 --- a/content/github/creating-cloning-and-archiving-repositories/archiving-repositories.md +++ b/content/github/creating-cloning-and-archiving-repositories/archiving-repositories.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% data reusables.repositories.archiving-repositories-recommendation %} diff --git a/content/github/creating-cloning-and-archiving-repositories/backing-up-a-repository.md b/content/github/creating-cloning-and-archiving-repositories/backing-up-a-repository.md index ac898cfee5..8fd1c33c3f 100644 --- a/content/github/creating-cloning-and-archiving-repositories/backing-up-a-repository.md +++ b/content/github/creating-cloning-and-archiving-repositories/backing-up-a-repository.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% if currentVersion == "free-pro-team@latest" %} diff --git a/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github.md b/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github.md index 8272d98dcb..e8b70b558f 100644 --- a/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github.md +++ b/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository.md b/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository.md index 0dc66db59f..8014777ecb 100644 --- a/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository.md +++ b/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### About cloning a repository diff --git a/content/github/creating-cloning-and-archiving-repositories/creating-a-new-repository.md b/content/github/creating-cloning-and-archiving-repositories/creating-a-new-repository.md index fbd4af8d7b..bdf453d842 100644 --- a/content/github/creating-cloning-and-archiving-repositories/creating-a-new-repository.md +++ b/content/github/creating-cloning-and-archiving-repositories/creating-a-new-repository.md @@ -13,6 +13,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% tip %} diff --git a/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template.md b/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template.md index c8174a611e..a5cb896023 100644 --- a/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template.md +++ b/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### About repository templates diff --git a/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github.md b/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github.md index ca3e328a93..ab4eaeb9cd 100644 --- a/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github.md +++ b/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/creating-cloning-and-archiving-repositories/creating-a-template-repository.md b/content/github/creating-cloning-and-archiving-repositories/creating-a-template-repository.md index 39778d159c..786ce1022c 100644 --- a/content/github/creating-cloning-and-archiving-repositories/creating-a-template-repository.md +++ b/content/github/creating-cloning-and-archiving-repositories/creating-a-template-repository.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- {% note %} diff --git a/content/github/creating-cloning-and-archiving-repositories/creating-an-issues-only-repository.md b/content/github/creating-cloning-and-archiving-repositories/creating-an-issues-only-repository.md index 29b1a39280..c02192cb38 100644 --- a/content/github/creating-cloning-and-archiving-repositories/creating-an-issues-only-repository.md +++ b/content/github/creating-cloning-and-archiving-repositories/creating-an-issues-only-repository.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- 1. Create a **private** repository to host the source code from your project. diff --git a/content/github/creating-cloning-and-archiving-repositories/duplicating-a-repository.md b/content/github/creating-cloning-and-archiving-repositories/duplicating-a-repository.md index bff96eedc7..69243b563c 100644 --- a/content/github/creating-cloning-and-archiving-repositories/duplicating-a-repository.md +++ b/content/github/creating-cloning-and-archiving-repositories/duplicating-a-repository.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- Before you can duplicate a repository and push to your new copy, or _mirror_, of the repository, you must [create the new repository](/articles/creating-a-new-repository) on {% data variables.product.product_location %}. In these examples, `exampleuser/new-repository` or `exampleuser/mirrored` are the mirrors. diff --git a/content/github/creating-cloning-and-archiving-repositories/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout.md b/content/github/creating-cloning-and-archiving-repositories/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout.md index f1854f8be8..1f7017a371 100644 --- a/content/github/creating-cloning-and-archiving-repositories/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout.md +++ b/content/github/creating-cloning-and-archiving-repositories/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- Detecting this error is simple; Git will warn you when you try to clone the repository: diff --git a/content/github/creating-cloning-and-archiving-repositories/error-repository-not-found.md b/content/github/creating-cloning-and-archiving-repositories/error-repository-not-found.md index 55b0e571ce..b5a1a1591d 100644 --- a/content/github/creating-cloning-and-archiving-repositories/error-repository-not-found.md +++ b/content/github/creating-cloning-and-archiving-repositories/error-repository-not-found.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- ### Check your spelling diff --git a/content/github/creating-cloning-and-archiving-repositories/https-cloning-errors.md b/content/github/creating-cloning-and-archiving-repositories/https-cloning-errors.md index 5910f71320..8c1b1a9b6a 100644 --- a/content/github/creating-cloning-and-archiving-repositories/https-cloning-errors.md +++ b/content/github/creating-cloning-and-archiving-repositories/https-cloning-errors.md @@ -11,6 +11,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- Here's an example of an HTTPS error you might receive: diff --git a/content/github/creating-cloning-and-archiving-repositories/index.md b/content/github/creating-cloning-and-archiving-repositories/index.md index d590e22a92..c5b3fb896f 100644 --- a/content/github/creating-cloning-and-archiving-repositories/index.md +++ b/content/github/creating-cloning-and-archiving-repositories/index.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- diff --git a/content/github/creating-cloning-and-archiving-repositories/licensing-a-repository.md b/content/github/creating-cloning-and-archiving-repositories/licensing-a-repository.md index 0110416cc7..aaf80f4d9a 100644 --- a/content/github/creating-cloning-and-archiving-repositories/licensing-a-repository.md +++ b/content/github/creating-cloning-and-archiving-repositories/licensing-a-repository.md @@ -7,6 +7,8 @@ redirect_from: versions: free-pro-team: '*' enterprise-server: '*' +topics: + - repositories --- ### Choosing the right license diff --git a/content/github/creating-cloning-and-archiving-repositories/limits-for-viewing-content-and-diffs-in-a-repository.md b/content/github/creating-cloning-and-archiving-repositories/limits-for-viewing-content-and-diffs-in-a-repository.md index 0a5310093a..1ebf7e51a8 100644 --- a/content/github/creating-cloning-and-archiving-repositories/limits-for-viewing-content-and-diffs-in-a-repository.md +++ b/content/github/creating-cloning-and-archiving-repositories/limits-for-viewing-content-and-diffs-in-a-repository.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - repositories --- Most of the limits below affect both {% data variables.product.product_name %} and the API. diff --git a/content/github/creating-cloning-and-archiving-repositories/referencing-and-citing-content.md b/content/github/creating-cloning-and-archiving-repositories/referencing-and-citing-content.md index 6bf832fcb6..be9786624d 100644 --- a/content/github/creating-cloning-and-archiving-repositories/referencing-and-citing-content.md +++ b/content/github/creating-cloning-and-archiving-repositories/referencing-and-citing-content.md @@ -5,6 +5,8 @@ redirect_from: - /articles/referencing-and-citing-content versions: free-pro-team: '*' +topics: + - repositories --- ### Issuing a persistent identifier for your repository with Zenodo diff --git a/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md b/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md index 22648b2242..c7553618ce 100644 --- a/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md +++ b/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md @@ -4,6 +4,8 @@ intro: 'When {% data variables.product.prodname_codespaces %} becomes generally product: '{% data reusables.gated-features.codespaces %}' versions: free-pro-team: '*' +topics: + - codespaces --- {% data reusables.codespaces.release-stage %} diff --git a/content/github/developing-online-with-codespaces/about-codespaces.md b/content/github/developing-online-with-codespaces/about-codespaces.md index c711a28763..133a2f95f3 100644 --- a/content/github/developing-online-with-codespaces/about-codespaces.md +++ b/content/github/developing-online-with-codespaces/about-codespaces.md @@ -6,6 +6,8 @@ redirect_from: - /github/developing-online-with-github-codespaces/about-github-codespaces versions: free-pro-team: '*' +topics: + - codespaces --- {% note %} diff --git a/content/github/developing-online-with-codespaces/configuring-codespaces-for-your-project.md b/content/github/developing-online-with-codespaces/configuring-codespaces-for-your-project.md index 07781dde1b..0c63b670ab 100644 --- a/content/github/developing-online-with-codespaces/configuring-codespaces-for-your-project.md +++ b/content/github/developing-online-with-codespaces/configuring-codespaces-for-your-project.md @@ -7,6 +7,8 @@ redirect_from: - /github/developing-online-with-github-codespaces/configuring-github-codespaces-for-your-project versions: free-pro-team: '*' +topics: + - codespaces --- {% data reusables.codespaces.release-stage %} diff --git a/content/github/developing-online-with-codespaces/creating-a-codespace.md b/content/github/developing-online-with-codespaces/creating-a-codespace.md index ff22cc9ec4..11f694ab41 100644 --- a/content/github/developing-online-with-codespaces/creating-a-codespace.md +++ b/content/github/developing-online-with-codespaces/creating-a-codespace.md @@ -7,6 +7,8 @@ redirect_from: - /github/developing-online-with-github-codespaces/creating-a-codespace versions: free-pro-team: '*' +topics: + - codespaces --- {% data reusables.codespaces.release-stage %} diff --git a/content/github/developing-online-with-codespaces/deleting-a-codespace.md b/content/github/developing-online-with-codespaces/deleting-a-codespace.md index db9fe05a45..3479d7ede0 100644 --- a/content/github/developing-online-with-codespaces/deleting-a-codespace.md +++ b/content/github/developing-online-with-codespaces/deleting-a-codespace.md @@ -7,6 +7,8 @@ redirect_from: - /github/developing-online-with-github-codespaces/deleting-a-codespace versions: free-pro-team: '*' +topics: + - codespaces --- {% data reusables.codespaces.release-stage %} diff --git a/content/github/developing-online-with-codespaces/developing-in-a-codespace.md b/content/github/developing-online-with-codespaces/developing-in-a-codespace.md index a9df2f093f..f40aa202bc 100644 --- a/content/github/developing-online-with-codespaces/developing-in-a-codespace.md +++ b/content/github/developing-online-with-codespaces/developing-in-a-codespace.md @@ -7,6 +7,8 @@ redirect_from: - /github/developing-online-with-github-codespaces/developing-in-a-codespace versions: free-pro-team: '*' +topics: + - codespaces --- {% data reusables.codespaces.release-stage %} diff --git a/content/github/developing-online-with-codespaces/index.md b/content/github/developing-online-with-codespaces/index.md index 1ec4ada121..c0a39439e1 100644 --- a/content/github/developing-online-with-codespaces/index.md +++ b/content/github/developing-online-with-codespaces/index.md @@ -7,6 +7,8 @@ redirect_from: - /github/developing-online-with-github-codespaces versions: free-pro-team: '*' +topics: + - codespaces --- {% data reusables.codespaces.release-stage %} diff --git a/content/github/developing-online-with-codespaces/managing-access-and-security-for-codespaces.md b/content/github/developing-online-with-codespaces/managing-access-and-security-for-codespaces.md index a364ad3050..1db7b63da3 100644 --- a/content/github/developing-online-with-codespaces/managing-access-and-security-for-codespaces.md +++ b/content/github/developing-online-with-codespaces/managing-access-and-security-for-codespaces.md @@ -4,6 +4,8 @@ intro: You can manage the repositories that codespaces can access. product: '{% data reusables.gated-features.codespaces %}' versions: free-pro-team: '*' +topics: + - codespaces --- {% note %} diff --git a/content/github/developing-online-with-codespaces/managing-encrypted-secrets-for-codespaces.md b/content/github/developing-online-with-codespaces/managing-encrypted-secrets-for-codespaces.md index 2843a272a7..f99fc17ff1 100644 --- a/content/github/developing-online-with-codespaces/managing-encrypted-secrets-for-codespaces.md +++ b/content/github/developing-online-with-codespaces/managing-encrypted-secrets-for-codespaces.md @@ -1,9 +1,11 @@ --- title: Managing encrypted secrets for Codespaces -intro: You can store sensitive information, like tokens, that you want to access in your codespaces via environment variables. +intro: 'You can store sensitive information, like tokens, that you want to access in your codespaces via environment variables.' product: '{% data reusables.gated-features.codespaces %}' versions: free-pro-team: '*' +topics: + - codespaces --- {% note %} diff --git a/content/github/developing-online-with-codespaces/managing-gpg-verification-for-codespaces.md b/content/github/developing-online-with-codespaces/managing-gpg-verification-for-codespaces.md index 41c3420829..2aeb8deb09 100644 --- a/content/github/developing-online-with-codespaces/managing-gpg-verification-for-codespaces.md +++ b/content/github/developing-online-with-codespaces/managing-gpg-verification-for-codespaces.md @@ -1,9 +1,11 @@ --- title: Managing GPG verification for Codespaces -intro: You can allow {% data variables.product.company_short %} to automatically use GPG to sign commits you make in your codespaces, so other people can be confident that the changes come from a trusted source. +intro: 'You can allow {% data variables.product.company_short %} to automatically use GPG to sign commits you make in your codespaces, so other people can be confident that the changes come from a trusted source.' product: '{% data reusables.gated-features.codespaces %}' versions: free-pro-team: '*' +topics: + - codespaces --- {% note %} diff --git a/content/github/developing-online-with-codespaces/personalizing-codespaces-for-your-account.md b/content/github/developing-online-with-codespaces/personalizing-codespaces-for-your-account.md index 2539fd6762..57ec686acc 100644 --- a/content/github/developing-online-with-codespaces/personalizing-codespaces-for-your-account.md +++ b/content/github/developing-online-with-codespaces/personalizing-codespaces-for-your-account.md @@ -7,6 +7,8 @@ redirect_from: - /github/developing-online-with-github-codespaces/personalizing-github-codespaces-for-your-account versions: free-pro-team: '*' +topics: + - codespaces --- {% data reusables.codespaces.release-stage %} diff --git a/content/github/developing-online-with-codespaces/troubleshooting-your-codespace.md b/content/github/developing-online-with-codespaces/troubleshooting-your-codespace.md index 2daf7c2607..400c039188 100644 --- a/content/github/developing-online-with-codespaces/troubleshooting-your-codespace.md +++ b/content/github/developing-online-with-codespaces/troubleshooting-your-codespace.md @@ -6,6 +6,8 @@ redirect_from: - /github/developing-online-with-github-codespaces/troubleshooting-your-codespace versions: free-pro-team: '*' +topics: + - codespaces --- {% data reusables.codespaces.release-stage %} diff --git a/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio-code.md b/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio-code.md index cc973aea5e..a190ef1962 100644 --- a/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio-code.md +++ b/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio-code.md @@ -6,6 +6,8 @@ redirect_from: - /github/developing-online-with-codespaces/connecting-to-your-codespace-from-visual-studio-code versions: free-pro-team: '*' +topics: + - codespaces --- {% data reusables.codespaces.release-stage %} diff --git a/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio.md b/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio.md index 64cedbedb9..084fc31a53 100644 --- a/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio.md +++ b/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio.md @@ -4,6 +4,8 @@ intro: 'You can develop in your codespace directly in {% data variables.product. product: '{% data reusables.gated-features.codespaces %}' versions: free-pro-team: '*' +topics: + - codespaces --- {% note %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md index 93644fd985..8599ca24b2 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md index 0e514fc25e..5869a83fc0 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md index d8f88cd46b..cac898efaf 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md index c54a30bb93..26d4311360 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md index 59a0a4ee6e..dae62003f2 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md @@ -10,6 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta-codeql-runner %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md index 3f9ef7ac04..99dabb5999 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md @@ -11,6 +11,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md index cf5bc1721e..3b6825a2db 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- ### Table of Contents diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md index ee5e4671d5..a463ffdbf6 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md @@ -10,5 +10,7 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md index a05a2ca349..004c326f79 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md index 79d735ffec..511d7205cd 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md index eb3de38525..8bdd7005a8 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md index e7659aeb09..1046810c03 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md @@ -12,6 +12,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md index 496acb2802..1d93129def 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md @@ -8,6 +8,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md index 6a37da5f57..7fb5107e44 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta-codeql-runner %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md index 5e1f031769..b88ddd1e4f 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md @@ -9,6 +9,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta %} @@ -168,4 +170,4 @@ The revised `steps` section of the workflow will look like this: ... ``` -For more information about editing the {% data variables.product.prodname_codeql %} workflow file, see "[Configuring {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#editing-a-code-scanning-workflow)." \ No newline at end of file +For more information about editing the {% data variables.product.prodname_codeql %} workflow file, see "[Configuring {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#editing-a-code-scanning-workflow)." diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md index a8908896f7..d8b31a6968 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md @@ -10,6 +10,8 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md index 942e66060b..685e815aea 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md @@ -8,5 +8,7 @@ versions: free-pro-team: '*' enterprise-server: '>=2.22' github-ae: '*' +topics: + - security --- diff --git a/content/github/finding-talent-with-github-jobs/about-github-jobs.md b/content/github/finding-talent-with-github-jobs/about-github-jobs.md index b828445961..f524f975c7 100644 --- a/content/github/finding-talent-with-github-jobs/about-github-jobs.md +++ b/content/github/finding-talent-with-github-jobs/about-github-jobs.md @@ -6,6 +6,8 @@ redirect_from: intro: 'You can post a job on {% data variables.product.prodname_jobs %} to find talent for your business.' versions: free-pro-team: '*' +topics: + - jobs --- Before you can post a job, you must create a {% data variables.product.prodname_dotcom %} account and verify your email address. For more information, see "[Signing up for a new {% data variables.product.prodname_dotcom %} account](/articles/signing-up-for-a-new-github-account)" and "[Verifying your email address](/articles/verifying-your-email-address)." diff --git a/content/github/finding-talent-with-github-jobs/index.md b/content/github/finding-talent-with-github-jobs/index.md index 2ac9ca9b92..16bb315d08 100644 --- a/content/github/finding-talent-with-github-jobs/index.md +++ b/content/github/finding-talent-with-github-jobs/index.md @@ -6,6 +6,8 @@ redirect_from: - /categories/finding-talent-with-github-jobs versions: free-pro-team: '*' +topics: + - jobs --- diff --git a/content/github/getting-started-with-github/about-github-advanced-security.md b/content/github/getting-started-with-github/about-github-advanced-security.md index 150880858d..89ae0113f8 100644 --- a/content/github/getting-started-with-github/about-github-advanced-security.md +++ b/content/github/getting-started-with-github/about-github-advanced-security.md @@ -6,6 +6,8 @@ versions: free-pro-team: '*' enterprise-server: '>=3.0' github-ae: '*' +topics: + - security --- ### About {% data variables.product.prodname_GH_advanced_security %} diff --git a/content/github/getting-started-with-github/access-permissions-on-github.md b/content/github/getting-started-with-github/access-permissions-on-github.md index b2483b1986..bd8b6a4f51 100644 --- a/content/github/getting-started-with-github/access-permissions-on-github.md +++ b/content/github/getting-started-with-github/access-permissions-on-github.md @@ -10,6 +10,9 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - permissions + - accounts --- ### Personal user accounts diff --git a/content/github/getting-started-with-github/be-social.md b/content/github/getting-started-with-github/be-social.md index d326445068..2817ef122e 100644 --- a/content/github/getting-started-with-github/be-social.md +++ b/content/github/getting-started-with-github/be-social.md @@ -8,6 +8,12 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - profile + - pull requests + - issues + - notifications + - accounts --- To learn about accessing your personal dashboard, see "[About your personal dashboard](/articles/about-your-personal-dashboard)." diff --git a/content/github/getting-started-with-github/create-a-repo.md b/content/github/getting-started-with-github/create-a-repo.md index e04f4e2030..94477e922c 100644 --- a/content/github/getting-started-with-github/create-a-repo.md +++ b/content/github/getting-started-with-github/create-a-repo.md @@ -8,6 +8,11 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests + - issues + - notifications + - accounts --- {% if currentVersion == "free-pro-team@latest" %} diff --git a/content/github/getting-started-with-github/exploring-early-access-releases-with-feature-preview.md b/content/github/getting-started-with-github/exploring-early-access-releases-with-feature-preview.md index caee1aa1eb..595962f3c5 100644 --- a/content/github/getting-started-with-github/exploring-early-access-releases-with-feature-preview.md +++ b/content/github/getting-started-with-github/exploring-early-access-releases-with-feature-preview.md @@ -5,6 +5,8 @@ redirect_from: - /articles/exploring-early-access-releases-with-feature-preview versions: free-pro-team: '*' +topics: + - early access --- ### {% data variables.product.prodname_dotcom %}'s release cycle diff --git a/content/github/getting-started-with-github/exploring-projects-on-github.md b/content/github/getting-started-with-github/exploring-projects-on-github.md index 796214bfb5..86b64226f4 100644 --- a/content/github/getting-started-with-github/exploring-projects-on-github.md +++ b/content/github/getting-started-with-github/exploring-projects-on-github.md @@ -11,5 +11,7 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - projects --- diff --git a/content/github/getting-started-with-github/faq-about-changes-to-githubs-plans.md b/content/github/getting-started-with-github/faq-about-changes-to-githubs-plans.md index 6d85fbd4f0..c9bba505fd 100644 --- a/content/github/getting-started-with-github/faq-about-changes-to-githubs-plans.md +++ b/content/github/getting-started-with-github/faq-about-changes-to-githubs-plans.md @@ -3,6 +3,8 @@ title: FAQ about changes to GitHub’s plans intro: 'As of April 14, 2020, GitHub announced that all of the core GitHub features are now free for everyone.' versions: free-pro-team: '*' +topics: + - github --- ### What plans and pricing changes did GitHub announce on April 14? diff --git a/content/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github.md b/content/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github.md index d1b5e3c6c9..46760bbc07 100644 --- a/content/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github.md +++ b/content/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github.md @@ -10,6 +10,8 @@ redirect_from: - /github/getting-started-with-github/finding-open-source-projects-on-github versions: free-pro-team: '*' +topics: + - open source --- ### Discovering relevant projects diff --git a/content/github/getting-started-with-github/following-people.md b/content/github/getting-started-with-github/following-people.md index cbf380c4a0..c629d18751 100644 --- a/content/github/getting-started-with-github/following-people.md +++ b/content/github/getting-started-with-github/following-people.md @@ -7,6 +7,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - profile --- When you follow people, you'll see their public activity in the activity view of your news feed.{% if currentVersion == "free-pro-team@latest" %} If someone you follow stars a public repository, {% data variables.product.product_name %} may recommend the repository to you in the discovery view of your news feed.{% endif %} To follow someone, visit their profile page and click **Follow** under their profile image. diff --git a/content/github/getting-started-with-github/fork-a-repo.md b/content/github/getting-started-with-github/fork-a-repo.md index 74914f4ea5..777773290a 100644 --- a/content/github/getting-started-with-github/fork-a-repo.md +++ b/content/github/getting-started-with-github/fork-a-repo.md @@ -9,6 +9,11 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - pull requests + - issues + - notifications + - accounts --- Most commonly, forks are used to either propose changes to someone else's project or to use someone else's project as a starting point for your own idea. diff --git a/content/github/getting-started-with-github/github-cli.md b/content/github/getting-started-with-github/github-cli.md index 9abdb36159..ff68b7c922 100644 --- a/content/github/getting-started-with-github/github-cli.md +++ b/content/github/getting-started-with-github/github-cli.md @@ -5,6 +5,8 @@ versions: free-pro-team: '*' enterprise-server: '>2.19' github-ae: '*' +topics: + - cli --- ### About {% data variables.product.prodname_cli %} diff --git a/content/github/getting-started-with-github/github-desktop.md b/content/github/getting-started-with-github/github-desktop.md index bce85ea84e..cfb8affbb7 100644 --- a/content/github/getting-started-with-github/github-desktop.md +++ b/content/github/getting-started-with-github/github-desktop.md @@ -5,6 +5,8 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - desktop --- ### About {% data variables.product.prodname_desktop %} diff --git a/content/github/getting-started-with-github/github-for-mobile.md b/content/github/getting-started-with-github/github-for-mobile.md index 1a0fc38c53..13e7496742 100644 --- a/content/github/getting-started-with-github/github-for-mobile.md +++ b/content/github/getting-started-with-github/github-for-mobile.md @@ -4,6 +4,8 @@ intro: 'Triage, collaborate, and manage your work on {% data variables.product.p versions: free-pro-team: '*' enterprise-server: '>=3.0' +topics: + - mobile --- {% data reusables.mobile.ghes-release-phase %} diff --git a/content/github/getting-started-with-github/githubs-products.md b/content/github/getting-started-with-github/githubs-products.md index 0105730316..8a162bbf28 100644 --- a/content/github/getting-started-with-github/githubs-products.md +++ b/content/github/getting-started-with-github/githubs-products.md @@ -8,6 +8,12 @@ versions: free-pro-team: '*' enterprise-server: '*' github-ae: '*' +topics: + - accounts + - cli + - mobile + - desktop + - security --- {% data variables.product.prodname_dotcom %} offers free and paid products. You can see pricing and a full list of features for each product at <{% data variables.product.pricing_url %}>. {% data reusables.products.product-roadmap %} diff --git a/content/github/getting-started-with-github/index.md b/content/github/getting-started-with-github/index.md index f3f4596e9e..184a5a0296 100644 --- a/content/github/getting-started-with-github/index.md +++ b/content/github/getting-started-with-github/index.md @@ -34,6 +34,11 @@ featuredLinks: - /github/getting-started-with-github/types-of-github-accounts - /github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github - /github/getting-started-with-github/troubleshooting-connectivity-problems +topics: + - pull requests + - issues + - notifications + - accounts ---

    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

    g$htb641LxOg` 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 literal 0 HcmV?d00001 diff --git a/content/github/managing-subscriptions-and-notifications-on-github/about-notifications.md b/content/github/managing-subscriptions-and-notifications-on-github/about-notifications.md index b10f85762d..fcad125d24 100644 --- a/content/github/managing-subscriptions-and-notifications-on-github/about-notifications.md +++ b/content/github/managing-subscriptions-and-notifications-on-github/about-notifications.md @@ -63,7 +63,7 @@ To keep your subscriptions manageable, review your subscriptions and watched rep To customize how you'd like to receive updates for specific pull requests or issues, you can configure your preferences within the issue or pull request. For more information, see “[Triaging a single notification](/github/managing-subscriptions-and-notifications-on-github/triaging-a-single-notification#customizing-when-to-receive-future-updates-for-an-issue-or-pull-request).” {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "2.22"%} -You can enable push notifications in the {% data variables.product.prodname_mobile %} app. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#enabling-push-notifications-with-github-for-mobile)." +You can customize and schedule push notifications in the {% data variables.product.prodname_mobile %} app. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#managing-your-notification-settings-with-github-for-mobile)." {% endif %} ### Reasons for receiving notifications diff --git a/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md b/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md index 912d2a499f..caca1f4d81 100644 --- a/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md +++ b/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md @@ -50,7 +50,7 @@ The notifications inbox on {% data variables.product.product_name %}{% if curren - Group notifications in your inbox by repository or date to get a quick overview with less context switching {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "2.22" %} -In addition, the notifications inbox on {% data variables.product.prodname_mobile %} allows you to triage notifications in dark mode and receive push notifications for direct mentions. For more information, see "[Enabling push notifications with GitHub for mobile](#enabling-push-notifications-with-github-for-mobile)" or "[GitHub for mobile](/github/getting-started-with-github/github-for-mobile)." +In addition, you can receive and triage notifications on your mobile device with {% data variables.product.prodname_mobile %}. For more information, see "[Managing your notification settings with GitHub for mobile](#managing-your-notification-settings-with-github-for-mobile)" or "[GitHub for mobile](/github/getting-started-with-github/github-for-mobile)." {% endif %} #### Benefits of using an email client for notifications @@ -152,6 +152,26 @@ By default, anytime you gain access to a new repository, you will automatically If "Automatically watch repositories" is disabled, then you will not automatically watch your own repositories. You must navigate to your repository page and choose the watch option. +### Configuring your watch settings for an individual repository + +You can choose whether to watch or unwatch an individual repository. You can also choose to only be notified of {% if currentVersion == "free-pro-team@latest" %}certain event types such as issues, pull requests, discussions (if enabled for the repository) and {% endif %}new releases, or completely ignore an individual repository. + +{% data reusables.repositories.navigate-to-repo %} +2. In the upper-right corner, click the "Watch" drop-down menu to select a watch option. +{% if currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.20" %} + ![Watch options in a drop-down menu for a repository](/assets/images/help/notifications-v2/watch-repository-options.png) +{% endif %} +{% if currentVersion == "free-pro-team@latest" %} + ![Watch options in a drop-down menu for a repository](/assets/images/help/notifications-v2/watch-repository-options-custom.png) +{% data reusables.notifications-v2.custom-notifications-beta %} +The **Custom** option allows you to further customize notifications so that you're only notified when specific events happen in the repository, in addition to participating and @mentions. + + ![Custom watch options in a drop-down menu for a repository](/assets/images/help/notifications-v2/watch-repository-options-custom2.png) + +If you select "Issues", you will be notified about, and subscribed to, updates on every issue (including those that existed prior to you selecting this option) in the repository. If you're @mentioned in a pull request in this repository, you'll receive notifications for that too, and you'll be subscribed to updates on that specific pull request, in addition to being notified about issues. + +{% endif %} + ### Choosing where your organization’s email notifications are sent If you belong to an organization, you can choose the email account you want notifications for organization activity sent to. For example, if you belong to an organization for work, you may want your notifications sent to your work email address, rather than your personal address. @@ -200,28 +220,41 @@ Choose how you want to receive workflow run updates for repositories that you ar {% endif %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "2.22" %} -### Enabling push notifications with {% data variables.product.prodname_mobile %} +### Managing your notification settings with {% data variables.product.prodname_mobile %} -When you install {% data variables.product.prodname_mobile %}, you will automatically be opted into web notifications. You can then enable push notifications for direct mentions within the app. +When you install {% data variables.product.prodname_mobile %}, you will automatically be opted into web notifications. Within the app, you can enable push notifications for the following events. +- Direct mentions +- Assignments to issues or pull requests +- Requests to review a pull request +- Requests to approve a deployment -You can only receive notifications for pushes to repositories on {% data variables.product.prodname_mobile %} at this time. +You can also schedule when {% data variables.product.prodname_mobile %} will send push notifications to your mobile device. {% data reusables.mobile.push-notifications-on-ghes %} -#### Enabling push notifications with {% data variables.product.prodname_ios %} +#### Managing your notification settings with {% data variables.product.prodname_ios %} -1. Above "Home", tap your profile photo. +1. In the bottom menu, tap **Profile**. 2. To view your settings, tap {% octicon "gear" aria-label="The Gear icon" %}. - ![Settings icon for GitHub for iOS](/assets/images/help/mobile/ios-settings-icon.png) -3. To update your notification settings, tap **Push notifications**. -4. To turn on push notifications for direct mentions, use the **Direct Mentions** toggle. +3. To update your notification settings, tap **Notifications** and then use the toggles to enable or disable your preferred types of push notifications. +4. Optionally, to schedule when {% data variables.product.prodname_mobile %} will send push notifications to your mobile device, tap **Working Hours**, use the **Custom working hours** toggle, and then choose when you would like to receive push notifications. -{% if currentVersion == "free-pro-team@latest" %} -#### Enabling push notifications with {% data variables.product.prodname_android %} +#### Managing your notification settings with {% data variables.product.prodname_android %} -1. Above "Home", tap your profile photo. +1. In the bottom menu, tap **Profile**. 2. To view your settings, tap {% octicon "gear" aria-label="The Gear icon" %}. - ![Settings icon for GitHub for Android](/assets/images/help/mobile/android-settings-icon.png) -3. To turn on push notifications for direct mentions, use the **Direct mentions** toggle. +3. To update your notification settings, tap **Notifications** and then use the toggles to enable or disable your preferred types of push notifications. +4. Optionally, to schedule when {% data variables.product.prodname_mobile %} will send push notifications to your mobile device, tap **Receive Notifications**, use the **Custom working hours** toggle, and then choose when you would like to receive push notifications. + +### Configuring your watch settings for an individual repository with {% data variables.product.prodname_mobile %} + +You can choose whether to watch or unwatch an individual repository. You can also choose to only be notified of {% if currentVersion == "free-pro-team@latest" %}certain event types such as issues, pull requests, discussions (if enabled for the repository) and {% endif %}new releases, or completely ignore an individual repository. + +1. On {% data variables.product.prodname_mobile %}, navigate to main page of the repository. +2. Tap **Watch**. + ![The watch button on {% data variables.product.prodname_mobile %}](/assets/images/help/notifications-v2/mobile-watch-button.png) +3. To choose what activities you receive notifications for, tap your preferred watch settings. + ![Watch settings dropdown menu in {% data variables.product.prodname_mobile %}](/assets/images/help/notifications-v2/mobile-watch-settings.png) +{% data reusables.notifications-v2.custom-notifications-beta %} + {% endif %} -{% endif %} \ No newline at end of file diff --git a/content/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions.md b/content/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions.md index fa4321a743..805e59fbd3 100644 --- a/content/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions.md +++ b/content/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions.md @@ -81,23 +81,3 @@ Many people forget about repositories that they've chosen to watch in the past. When you unwatch a repository, you can still be notified when you're @mentioned or participating in a thread. When you configure to receive notifications for certain event types, you're only notified when there are updates to these event types in the repository, you're participating in a thread, or you or a team you're on is @mentioned. {% endtip %} - -### Configuring your watch settings for an individual repository - -You can choose whether to watch or unwatch an individual repository. You can also choose to only be notified of {% if currentVersion == "free-pro-team@latest" %}certain event types such as issues, pull requests, discussions (if enabled for the repository) and {% endif %}new releases, or completely ignore an individual repository. - -{% data reusables.repositories.navigate-to-repo %} -2. In the upper-right corner, click the "Watch" drop-down menu to select a watch option. -{% if currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.20" %} - ![Watch options in a drop-down menu for a repository](/assets/images/help/notifications-v2/watch-repository-options.png) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} - ![Watch options in a drop-down menu for a repository](/assets/images/help/notifications-v2/watch-repository-options-custom.png) -{% data reusables.notifications-v2.custom-notifications-beta %} -The **Custom** option allows you to further customize notifications so that you're only notified when specific events happen in the repository, in addition to participating and @mentions. - - ![Custom watch options in a drop-down menu for a repository](/assets/images/help/notifications-v2/watch-repository-options-custom2.png) - -If you select "Issues", you will be notified about, and subscribed to, updates on every issue (including those that existed prior to you selecting this option) in the repository. If you're @mentioned in a pull request in this repository, you'll receive notifications for that too, and you'll be subscribed to updates on that specific pull request, in addition to being notified about issues. - -{% endif %} diff --git a/data/reusables/mobile/push-notifications-on-ghes.md b/data/reusables/mobile/push-notifications-on-ghes.md index 94535c20d3..954c32fc7b 100644 --- a/data/reusables/mobile/push-notifications-on-ghes.md +++ b/data/reusables/mobile/push-notifications-on-ghes.md @@ -1 +1 @@ -For {% data variables.product.prodname_ghe_server %}, push notifications for direct mentions are currently supported on iOS and coming soon to Android. {% data variables.product.prodname_ghe_server %} uses background fetch to support push notifications without sending your information to a third-party service, so you may experience a delay in receiving push notifications. \ No newline at end of file +{% data variables.product.prodname_ghe_server %} uses background fetch to support push notifications without sending your information to a third-party service, so you may experience a delay in receiving push notifications. \ No newline at end of file From 0d0d3c02ba21fc83e028a612cbae755c4a3862b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Wed, 17 Mar 2021 05:47:37 +0100 Subject: [PATCH 22/37] Add some missing properties on workflow_run events (#2767) Co-authored-by: Lucas Costi --- .../webhooks-and-events/webhook-events-and-payloads.md | 5 ++--- data/reusables/webhooks/workflow_desc.md | 1 + data/reusables/webhooks/workflow_run_properties.md | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 data/reusables/webhooks/workflow_desc.md create mode 100644 data/reusables/webhooks/workflow_run_properties.md diff --git a/content/developers/webhooks-and-events/webhook-events-and-payloads.md b/content/developers/webhooks-and-events/webhook-events-and-payloads.md index f55db93d4d..2336205b85 100644 --- a/content/developers/webhooks-and-events/webhook-events-and-payloads.md +++ b/content/developers/webhooks-and-events/webhook-events-and-payloads.md @@ -1335,9 +1335,8 @@ When a {% data variables.product.prodname_actions %} workflow run is requested o #### Webhook payload object -Key | Type | Description -----|------|------------- -`action` | `string` | Most webhook payloads contain an `action` property that contains the specific activity that triggered the event. +{% data reusables.webhooks.workflow_run_properties %} +{% data reusables.webhooks.workflow_desc %} {% data reusables.webhooks.org_desc %} {% data reusables.webhooks.repo_desc %} {% data reusables.webhooks.sender_desc %} diff --git a/data/reusables/webhooks/workflow_desc.md b/data/reusables/webhooks/workflow_desc.md new file mode 100644 index 0000000000..6f716dbe56 --- /dev/null +++ b/data/reusables/webhooks/workflow_desc.md @@ -0,0 +1 @@ +`workflow` | `object` | The workflow that generated the workflow run. diff --git a/data/reusables/webhooks/workflow_run_properties.md b/data/reusables/webhooks/workflow_run_properties.md new file mode 100644 index 0000000000..1ff99e14f5 --- /dev/null +++ b/data/reusables/webhooks/workflow_run_properties.md @@ -0,0 +1,4 @@ +Key | Type | Description +----|------|------------- +`action`|`string` | The action that was performed. Can be one of `requested` or `completed`. +`workflow_run`| `object` | The workflow run. Many `workflow_run` keys, such as `head_branch`, `conclusion`, and `pull_requests` are the same as those in a [`check_suite`](#check_suite) object. From b18d884e208382965b83ed4f60d54e054e246707 Mon Sep 17 00:00:00 2001 From: Mike McDonald <2575327+asciimike@users.noreply.github.com> Date: Tue, 16 Mar 2021 23:10:43 -0600 Subject: [PATCH 23/37] Adding additional information for workflow_runs (#18235) Co-authored-by: Lucas Costi --- .../events-that-trigger-workflows.md | 29 +++++++++++++++++-- .../actions/workflow-runs-dependabot-note.md | 2 +- .../pull_request_forked_repos_link.md | 6 ++++ data/reusables/webhooks/workflow_run_desc.md | 5 ++-- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/content/actions/reference/events-that-trigger-workflows.md b/content/actions/reference/events-that-trigger-workflows.md index 0755a7a807..d1e9e8de83 100644 --- a/content/actions/reference/events-that-trigger-workflows.md +++ b/content/actions/reference/events-that-trigger-workflows.md @@ -721,12 +721,14 @@ on: {% data reusables.github-actions.branch-requirement %} | Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`workflow_run`](/webhooks/event-payloads/#workflow_run) | - n/a | Last commit on default branch | Default branch | +| --------------------- | -------------- | ------------ | -------------| +| [`workflow_run`](/webhooks/event-payloads/#workflow_run) | - `completed`
    - `requested` | Last commit on default branch | Default branch | + +{% data reusables.developer-site.limit_workflow_to_activity_types %} If you need to filter branches from this event, you can use `branches` or `branches-ignore`. -In this example, a workflow is configured to run after the separate “Run Tests” workflow completes. +In this example, a workflow is configured to run after the separate "Run Tests" workflow completes. ```yaml on: @@ -740,6 +742,27 @@ on: {% endif %} +To run a workflow job conditionally based on the result of the previous workflow run, you can use the [`jobs..if`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idif) or [`jobs..steps[*].if`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsif) conditional combined with the `conclusion` of the previous run. For example: + +```yaml +on: + workflow_run: + workflows: ["Build"] + types: [completed] + +jobs: + on-success: + runs-on: ubuntu-latest + if: {% raw %}${{ github.event.workflow_run.conclusion == 'success' }}{% endraw %} + steps: + ... + on-failure: + runs-on: ubuntu-latest + if: {% raw %}${{ github.event.workflow_run.conclusion == 'failure' }}{% endraw %} + steps: + ... +``` + ### Triggering new workflows using a personal access token {% data reusables.github-actions.actions-do-not-trigger-workflows %} For more information, see "[Authenticating with the GITHUB_TOKEN](/actions/configuring-and-managing-workflows/authenticating-with-the-github_token)." diff --git a/data/reusables/actions/workflow-runs-dependabot-note.md b/data/reusables/actions/workflow-runs-dependabot-note.md index 1e61585baa..bbf085d6bf 100644 --- a/data/reusables/actions/workflow-runs-dependabot-note.md +++ b/data/reusables/actions/workflow-runs-dependabot-note.md @@ -1,7 +1,7 @@ {% if currentVersion == "free-pro-team@latest" %} {% note %} -**Note:** Pull requests for {% data variables.product.prodname_dependabot %} version updates will trigger workflow runs with a read-only `GITHUB_TOKEN`. These workflow runs will not be granted access to any secrets. +**Note:** Workflow runs triggered by {% data variables.product.prodname_dependabot %} pull requests run as if they are from a forked repository, and therefore use a read-only `GITHUB_TOKEN`. These workflow runs cannot access any secrets. See ["Keeping your GitHub Actions and workflows secure: Preventing pwn requests"](https://securitylab.github.com/research/github-actions-preventing-pwn-requests) for strategies to keep these workflows secure. {% endnote %} {% endif %} diff --git a/data/reusables/developer-site/pull_request_forked_repos_link.md b/data/reusables/developer-site/pull_request_forked_repos_link.md index 144420eb2f..54d745b497 100644 --- a/data/reusables/developer-site/pull_request_forked_repos_link.md +++ b/data/reusables/developer-site/pull_request_forked_repos_link.md @@ -11,3 +11,9 @@ When you create a pull request from a forked repository to the base repository, Workflows don't run on forked repositories by default. You must enable GitHub Actions in the **Actions** tab of the forked repository. {% data reusables.actions.forked-secrets %} The permissions for the `GITHUB_TOKEN` in forked repositories is read-only. For more information, see "[Authenticating with the GITHUB_TOKEN](/actions/configuring-and-managing-workflows/authenticating-with-the-github_token)." + +{% note %} + +**Note:** Workflows triggered by {% data variables.product.prodname_dependabot %} pull requests are treated as though they are from a forked repository, and are also subject to these restrictions. + +{% endnote %} diff --git a/data/reusables/webhooks/workflow_run_desc.md b/data/reusables/webhooks/workflow_run_desc.md index 8866577116..486a20dcd1 100644 --- a/data/reusables/webhooks/workflow_run_desc.md +++ b/data/reusables/webhooks/workflow_run_desc.md @@ -1,4 +1,5 @@ +This event occurs when a workflow run is requested or completed, and allows you to execute a workflow based on the finished result of another workflow. A workflow run is triggered regardless of the result of the previous workflow. -This event occurs when a workflow run is requested or completed, and allows you to execute a workflow based on the finished result of another workflow. For example, if your `pull_request` workflow generates build artifacts, you can create a new workflow that uses `workflow_run` to analyze the results and add a comment to the original pull request. +For example, if your `pull_request` workflow generates build artifacts, you can create a new workflow that uses `workflow_run` to analyze the results and add a comment to the original pull request. -The workflow started by the `workflow_run` event is able to access the secrets and write tokens used by the original workflow. +The workflow started by the `workflow_run` event is able to access secrets and write tokens, even if the previous workflow was not. This is useful in cases where the previous workflow is intentionally not privileged, but you need to take a privileged action in a later workflow. From 6a7e93f2258c3f382de60ef0df46c5c13e20cdb6 Mon Sep 17 00:00:00 2001 From: Felicity Chapman Date: Wed, 17 Mar 2021 08:07:11 +0000 Subject: [PATCH 24/37] Revert "Group user docs on code security into a new "product" (#18196)" (#18277) --- .../code-security/getting-started/index.md | 13 - content/code-security/index.md | 19 - .../code-security/secret-security/index.md | 16 - .../secure-coding/about-code-scanning.md | 62 --- .../about-integration-with-code-scanning.md | 29 -- ...our-code-for-vulnerabilities-and-errors.md | 14 - .../configuring-code-scanning.md | 321 ------------- ...-codeql-code-scanning-in-your-ci-system.md | 190 -------- ...-codeql-workflow-for-compiled-languages.md | 120 ----- content/code-security/secure-coding/index.md | 32 -- .../integrating-with-code-scanning.md | 14 - ...ode-scanning-alerts-for-your-repository.md | 135 ------ ...ing-codeql-code-scanning-in-a-container.md | 72 --- ...-codeql-code-scanning-in-your-ci-system.md | 175 ------- .../sarif-support-for-code-scanning.md | 429 ------------------ ...tting-up-code-scanning-for-a-repository.md | 120 ----- ...g-code-scanning-alerts-in-pull-requests.md | 69 --- ...-codeql-code-scanning-in-your-ci-system.md | 58 --- .../troubleshooting-the-codeql-workflow.md | 171 ------- .../uploading-a-sarif-file-to-github.md | 119 ----- ...e-scanning-with-your-existing-ci-system.md | 14 - .../security-advisories/index.md | 23 - ...bout-alerts-for-vulnerable-dependencies.md | 96 ---- .../about-the-dependency-graph.md | 92 ---- ...tifications-for-vulnerable-dependencies.md | 58 --- ...loring-the-dependencies-of-a-repository.md | 116 ----- .../supply-chain-security/index.md | 33 -- ...abilities-in-your-projects-dependencies.md | 12 - ...nderstanding-your-software-supply-chain.md | 12 - ...ating-a-github-app-using-url-parameters.md | 2 +- .../webhook-events-and-payloads.md | 2 +- .../about-dependabot-version-updates.md | 1 - .../about-secret-scanning.md | 1 - .../about-securing-your-repository.md | 2 - ...guration-options-for-dependency-updates.md | 2 - ...g-secret-scanning-for-your-repositories.md | 1 - .../customizing-dependency-updates.md | 2 - .../enabling-and-disabling-version-updates.md | 3 - .../administering-a-repository/index.md | 16 +- ...your-actions-up-to-date-with-dependabot.md | 1 - ...your-dependencies-updated-automatically.md | 2 - ...ndencies-configured-for-version-updates.md | 2 - .../managing-alerts-from-secret-scanning.md | 2 - ...naging-encrypted-secrets-for-dependabot.md | 2 - ...ng-pull-requests-for-dependency-updates.md | 2 - ...ng-dependency-changes-in-a-pull-request.md | 1 - .../about-code-scanning.md | 4 +- .../about-integration-with-code-scanning.md | 4 +- ...our-code-for-vulnerabilities-and-errors.md | 4 +- .../configuring-code-scanning.md | 4 +- ...-codeql-code-scanning-in-your-ci-system.md | 4 +- ...-codeql-workflow-for-compiled-languages.md | 4 +- .../index.md | 4 +- .../integrating-with-code-scanning.md | 4 +- ...ode-scanning-alerts-for-your-repository.md | 4 +- ...ing-codeql-code-scanning-in-a-container.md | 4 +- ...-codeql-code-scanning-in-your-ci-system.md | 4 +- .../sarif-support-for-code-scanning.md | 4 +- ...tting-up-code-scanning-for-a-repository.md | 4 +- ...g-code-scanning-alerts-in-pull-requests.md | 4 +- ...-codeql-code-scanning-in-your-ci-system.md | 4 +- .../troubleshooting-the-codeql-workflow.md | 4 +- .../uploading-a-sarif-file-to-github.md | 4 +- ...e-scanning-with-your-existing-ci-system.md | 4 +- content/github/index.md | 5 +- ...bout-alerts-for-vulnerable-dependencies.md | 3 +- .../about-dependabot-security-updates.md | 4 +- .../about-github-security-advisories.md | 1 - .../about-managing-vulnerable-dependencies.md | 5 +- ...g-a-collaborator-to-a-security-advisory.md | 1 - ...ng-a-security-policy-to-your-repository.md | 1 - ...ilities-in-the-github-advisory-database.md | 7 +- ...ork-to-resolve-a-security-vulnerability.md | 1 - ...configuring-dependabot-security-updates.md | 4 +- ...tifications-for-vulnerable-dependencies.md | 3 +- .../creating-a-security-advisory.md | 1 - .../editing-a-security-advisory.md | 2 - .../index.md | 21 +- ...ecurity-vulnerabilities-in-your-project.md | 10 + ...abilities-in-your-projects-dependencies.md | 3 +- ...rmission-levels-for-security-advisories.md | 1 - .../publishing-a-security-advisory.md | 2 - ...a-collaborator-from-a-security-advisory.md | 2 - .../troubleshooting-dependabot-errors.md | 1 - ...he-detection-of-vulnerable-dependencies.md | 6 +- ...nerable-dependencies-in-your-repository.md | 5 +- .../withdrawing-a-security-advisory.md | 2 - ...y-permission-levels-for-an-organization.md | 2 +- .../about-the-dependency-graph.md | 5 +- ...loring-the-dependencies-of-a-repository.md | 3 +- .../index.md | 5 +- ...iewing-the-dependencies-of-a-repository.md | 13 - data/products.yml | 1 - .../code-scanning/enabling-options.md | 2 +- ...pository_vulnerability_alert_short_desc.md | 2 +- .../article-with-broken-links-and-images.md | 2 +- 96 files changed, 129 insertions(+), 2747 deletions(-) delete mode 100644 content/code-security/getting-started/index.md delete mode 100644 content/code-security/index.md delete mode 100644 content/code-security/secret-security/index.md delete mode 100644 content/code-security/secure-coding/about-code-scanning.md delete mode 100644 content/code-security/secure-coding/about-integration-with-code-scanning.md delete mode 100644 content/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors.md delete mode 100644 content/code-security/secure-coding/configuring-code-scanning.md delete mode 100644 content/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system.md delete mode 100644 content/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages.md delete mode 100644 content/code-security/secure-coding/index.md delete mode 100644 content/code-security/secure-coding/integrating-with-code-scanning.md delete mode 100644 content/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository.md delete mode 100644 content/code-security/secure-coding/running-codeql-code-scanning-in-a-container.md delete mode 100644 content/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system.md delete mode 100644 content/code-security/secure-coding/sarif-support-for-code-scanning.md delete mode 100644 content/code-security/secure-coding/setting-up-code-scanning-for-a-repository.md delete mode 100644 content/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests.md delete mode 100644 content/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system.md delete mode 100644 content/code-security/secure-coding/troubleshooting-the-codeql-workflow.md delete mode 100644 content/code-security/secure-coding/uploading-a-sarif-file-to-github.md delete mode 100644 content/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system.md delete mode 100644 content/code-security/security-advisories/index.md delete mode 100644 content/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies.md delete mode 100644 content/code-security/supply-chain-security/about-the-dependency-graph.md delete mode 100644 content/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies.md delete mode 100644 content/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository.md delete mode 100644 content/code-security/supply-chain-security/index.md delete mode 100644 content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies.md delete mode 100644 content/code-security/supply-chain-security/understanding-your-software-supply-chain.md rename content/{code-security/supply-chain-security => github/administering-a-repository}/about-dependabot-version-updates.md (98%) rename content/{code-security/secret-security => github/administering-a-repository}/about-secret-scanning.md (99%) rename content/{code-security/getting-started => github/administering-a-repository}/about-securing-your-repository.md (98%) rename content/{code-security/supply-chain-security => github/administering-a-repository}/configuration-options-for-dependency-updates.md (99%) rename content/{code-security/secret-security => github/administering-a-repository}/configuring-secret-scanning-for-your-repositories.md (98%) rename content/{code-security/supply-chain-security => github/administering-a-repository}/customizing-dependency-updates.md (98%) rename content/{code-security/supply-chain-security => github/administering-a-repository}/enabling-and-disabling-version-updates.md (97%) rename content/{code-security/supply-chain-security => github/administering-a-repository}/keeping-your-actions-up-to-date-with-dependabot.md (98%) rename content/{code-security/supply-chain-security => github/administering-a-repository}/keeping-your-dependencies-updated-automatically.md (69%) rename content/{code-security/supply-chain-security => github/administering-a-repository}/listing-dependencies-configured-for-version-updates.md (94%) rename content/{code-security/secret-security => github/administering-a-repository}/managing-alerts-from-secret-scanning.md (96%) rename content/{code-security/supply-chain-security => github/administering-a-repository}/managing-encrypted-secrets-for-dependabot.md (97%) rename content/{code-security/supply-chain-security => github/administering-a-repository}/managing-pull-requests-for-dependency-updates.md (97%) rename content/{code-security/supply-chain-security => github/managing-security-vulnerabilities}/about-dependabot-security-updates.md (91%) rename content/{code-security/security-advisories => github/managing-security-vulnerabilities}/about-github-security-advisories.md (97%) rename content/{code-security/supply-chain-security => github/managing-security-vulnerabilities}/about-managing-vulnerable-dependencies.md (90%) rename content/{code-security/security-advisories => github/managing-security-vulnerabilities}/adding-a-collaborator-to-a-security-advisory.md (96%) rename content/{code-security/security-advisories => github/managing-security-vulnerabilities}/adding-a-security-policy-to-your-repository.md (96%) rename content/{code-security/supply-chain-security => github/managing-security-vulnerabilities}/browsing-security-vulnerabilities-in-the-github-advisory-database.md (93%) rename content/{code-security/security-advisories => github/managing-security-vulnerabilities}/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md (97%) rename content/{code-security/supply-chain-security => github/managing-security-vulnerabilities}/configuring-dependabot-security-updates.md (95%) rename content/{code-security/security-advisories => github/managing-security-vulnerabilities}/creating-a-security-advisory.md (97%) rename content/{code-security/security-advisories => github/managing-security-vulnerabilities}/editing-a-security-advisory.md (95%) create mode 100644 content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md rename content/{code-security/security-advisories => github/managing-security-vulnerabilities}/permission-levels-for-security-advisories.md (97%) rename content/{code-security/security-advisories => github/managing-security-vulnerabilities}/publishing-a-security-advisory.md (96%) rename content/{code-security/security-advisories => github/managing-security-vulnerabilities}/removing-a-collaborator-from-a-security-advisory.md (93%) rename content/{code-security/supply-chain-security => github/managing-security-vulnerabilities}/troubleshooting-dependabot-errors.md (99%) rename content/{code-security/supply-chain-security => github/managing-security-vulnerabilities}/troubleshooting-the-detection-of-vulnerable-dependencies.md (97%) rename content/{code-security/supply-chain-security => github/managing-security-vulnerabilities}/viewing-and-updating-vulnerable-dependencies-in-your-repository.md (92%) rename content/{code-security/security-advisories => github/managing-security-vulnerabilities}/withdrawing-a-security-advisory.md (81%) delete mode 100644 content/github/visualizing-repository-data-with-graphs/viewing-the-dependencies-of-a-repository.md diff --git a/content/code-security/getting-started/index.md b/content/code-security/getting-started/index.md deleted file mode 100644 index 22c5b34423..0000000000 --- a/content/code-security/getting-started/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Getting started with code security -shortTitle: Getting started -intro: 'Introduction to code security with {% data variables.product.product_name %}.' -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -### Table of Contents - -{% link_in_list /about-securing-your-repository %} \ No newline at end of file diff --git a/content/code-security/index.md b/content/code-security/index.md deleted file mode 100644 index 31576b13f8..0000000000 --- a/content/code-security/index.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Code security -shortTitle: Code security -intro: 'Learn how to keep the code stored in your repositories secure.' -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% link_with_intro /getting-started %} - -{% link_with_intro /secret-security %} - -{% link_with_intro /secure-coding %} - -{% link_with_intro /security-advisories %} - -{% link_with_intro /supply-chain-security %} diff --git a/content/code-security/secret-security/index.md b/content/code-security/secret-security/index.md deleted file mode 100644 index 7a47549ae1..0000000000 --- a/content/code-security/secret-security/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Keeping secrets secure -shortTitle: Secret security -intro: 'Let GitHub do the hard work of ensuring that tokens, private keys, and other code secrets are not exposed in your repository.' -product: '{% data reusables.gated-features.secret-scanning %}' -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -### Table of Contents - -{% link_in_list /about-secret-scanning %} -{% link_in_list /configuring-secret-scanning-for-your-repositories %} -{% link_in_list /managing-alerts-from-secret-scanning %} diff --git a/content/code-security/secure-coding/about-code-scanning.md b/content/code-security/secure-coding/about-code-scanning.md deleted file mode 100644 index 8913a2f881..0000000000 --- a/content/code-security/secure-coding/about-code-scanning.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: About code scanning -intro: 'You can use {% data variables.product.prodname_code_scanning %} to find security vulnerabilities and errors in the code for your project on {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning %} - -### About {% data variables.product.prodname_code_scanning %} - -{% data reusables.code-scanning.about-code-scanning %} - -You can use {% data variables.product.prodname_code_scanning %} to find, triage, and prioritize fixes for existing problems in your code. {% data variables.product.prodname_code_scanning_capc %} also prevents developers from introducing new problems. You can schedule scans for specific days and times, or trigger scans when a specific event occurs in the repository, such as a push. - -If {% data variables.product.prodname_code_scanning %} finds a potential vulnerability or error in your code, {% data variables.product.prodname_dotcom %} displays an alert in the repository. After you fix the code that triggered the alert, {% data variables.product.prodname_dotcom %} closes the alert. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." - -To monitor results from {% data variables.product.prodname_code_scanning %} across your repositories or your organization, you can use webhooks and the {% data variables.product.prodname_code_scanning %} API. For information about the webhooks for {% data variables.product.prodname_code_scanning %}, see -"[Webhook events and payloads](/developers/webhooks-and-events/webhook-events-and-payloads#code_scanning_alert)." For information about API endpoints, see "[{% data variables.product.prodname_code_scanning_capc %}](/rest/reference/code-scanning)." - -To get started with {% data variables.product.prodname_code_scanning %}, see "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)." - -### About {% data variables.product.prodname_codeql %} - -You can use {% data variables.product.prodname_code_scanning %} with {% data variables.product.prodname_codeql %}, a semantic code analysis engine. {% data variables.product.prodname_codeql %} treats code as data, allowing you to find potential vulnerabilities in your code with greater confidence than traditional static analyzers. - -{% data variables.product.prodname_ql %} is the query language that powers {% data variables.product.prodname_codeql %}. {% data variables.product.prodname_ql %} is an object-oriented logic programming language. {% data variables.product.company_short %}, language experts, and security researchers create the queries used for {% data variables.product.prodname_code_scanning %}, and the queries are open source. The community maintains and updates the queries to improve analysis and reduce false positives. For more information, see [{% data variables.product.prodname_codeql %}](https://securitylab.github.com/tools/codeql) on the GitHub Security Lab website. - -{% data variables.product.prodname_code_scanning_capc %} with {% data variables.product.prodname_codeql %} supports both compiled and interpreted languages, and can find vulnerabilities and errors in code that's written in the supported languages. - -{% data reusables.code-scanning.supported-languages %} - -You can view and contribute to the queries for {% data variables.product.prodname_code_scanning %} in the [`github/codeql`](https://github.com/github/codeql) repository. For more information, see [{% data variables.product.prodname_codeql %} queries](https://codeql.github.com/docs/writing-codeql-queries/codeql-queries/) in the {% data variables.product.prodname_codeql %} documentation. - -{% if currentVersion == "free-pro-team@latest" %} - -### About billing for {% data variables.product.prodname_code_scanning %} - -{% data variables.product.prodname_code_scanning_capc %} uses {% data variables.product.prodname_actions %}, and each run of a {% data variables.product.prodname_code_scanning %} workflow consumes minutes for {% data variables.product.prodname_actions %}. For more information, see "[About billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions)." - -{% endif %} - -### About third-party code scanning tools - -{% data reusables.code-scanning.you-can-upload-third-party-analysis %} - -{% data reusables.code-scanning.interoperable-with-tools-that-output-sarif %} - -{% data reusables.code-scanning.get-started-uploading-third-party-data %} - -### Further reading - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -- "[About securing your repository](/github/administering-a-repository/about-securing-your-repository)"{% endif %} -- [{% data variables.product.prodname_security %}](https://securitylab.github.com/) -- [OASIS Static Analysis Results Interchange Format (SARIF) TC](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sarif) on the OASIS Committee website diff --git a/content/code-security/secure-coding/about-integration-with-code-scanning.md b/content/code-security/secure-coding/about-integration-with-code-scanning.md deleted file mode 100644 index 4542ac0eba..0000000000 --- a/content/code-security/secure-coding/about-integration-with-code-scanning.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: About integration with code scanning -shortTitle: About integration -intro: 'You can perform {% data variables.product.prodname_code_scanning %} externally and then display the results in {% data variables.product.prodname_dotcom %}, or set up webhooks that listen to {% data variables.product.prodname_code_scanning %} activity in your repository.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning %} - -As an alternative to running {% data variables.product.prodname_code_scanning %} within {% data variables.product.prodname_dotcom %}, you can perform analysis elsewhere and then upload the results. Alerts for {% data variables.product.prodname_code_scanning %} that you run externally are displayed in the same way as those for {% data variables.product.prodname_code_scanning %} that you run within {% data variables.product.prodname_dotcom %}. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." - -If you use a third-party static analysis tool that can produce results as Static Analysis Results Interchange Format (SARIF) 2.1.0 data, you can upload this to {% data variables.product.prodname_dotcom %}. For more information, see "[Uploading a SARIF file to GitHub](/code-security/secure-coding/uploading-a-sarif-file-to-github)." - -### Integrations with webhooks - -You can use {% data variables.product.prodname_code_scanning %} webhooks to build or set up integrations, such as [{% data variables.product.prodname_github_app %}s](/apps/building-github-apps/) or [{% data variables.product.prodname_oauth_app %}s](/apps/building-oauth-apps/), that subscribe to {% data variables.product.prodname_code_scanning %} events in your repository. For example, you could build an integration that creates an issue on {% data variables.product.product_name %} or sends you a Slack notification when a new {% data variables.product.prodname_code_scanning %} alert is added in your repository. For more information, see "[Creating webhooks](/developers/webhooks-and-events/creating-webhooks)" and "[Webhook events and payloads](/developers/webhooks-and-events/webhook-events-and-payloads#code_scanning_alert)." - -### Further reading - -* "[About {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/about-code-scanning)" -* "[Using {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} with your existing CI system](/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system)" -* "[SARIF support for {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/sarif-support-for-code-scanning)" diff --git a/content/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors.md b/content/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors.md deleted file mode 100644 index f5718e8713..0000000000 --- a/content/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Automatically scanning your code for vulnerabilities and errors -shortTitle: Scanning automatically -intro: 'You can find vulnerabilities and errors in your project''s code on {% data variables.product.prodname_dotcom %}, as well as view, triage, understand, and resolve the related {% data variables.product.prodname_code_scanning %} alerts.' -mapTopic: true -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - diff --git a/content/code-security/secure-coding/configuring-code-scanning.md b/content/code-security/secure-coding/configuring-code-scanning.md deleted file mode 100644 index 8837732c5b..0000000000 --- a/content/code-security/secure-coding/configuring-code-scanning.md +++ /dev/null @@ -1,321 +0,0 @@ ---- -title: Configuring code scanning -intro: 'You can configure how {% data variables.product.prodname_dotcom %} scans the code in your project for vulnerabilities and errors.' -product: '{% data reusables.gated-features.code-scanning %}' -permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_code_scanning %} for the repository.' -miniTocMaxHeadingLevel: 4 -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning-actions %} - -### About {% data variables.product.prodname_code_scanning %} configuration - -You can run {% data variables.product.prodname_code_scanning %} on {% data variables.product.product_name %}, using {% data variables.product.prodname_actions %}, or from your continuous integration (CI) system, using the {% data variables.product.prodname_codeql_runner %}. For more information about {% data variables.product.prodname_actions %}, see "[About {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/about-github-actions)." For more information about the {% data variables.product.prodname_codeql_runner %}, see "[Running {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)." - -This article is about running {% data variables.product.prodname_code_scanning %} on {% data variables.product.product_name %}. - -Before you can configure {% data variables.product.prodname_code_scanning %} for a repository, you must set up {% data variables.product.prodname_code_scanning %} by adding a {% data variables.product.prodname_actions %} workflow to the repository. For more information, see "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)." - -{% data reusables.code-scanning.edit-workflow %} - -{% data variables.product.prodname_codeql %} analysis is just one type of {% data variables.product.prodname_code_scanning %} you can do in {% data variables.product.prodname_dotcom %}. {% data variables.product.prodname_marketplace %}{% if currentVersion ver_gt "enterprise-server@2.21" %} on {% data variables.product.prodname_dotcom_the_website %}{% endif %} contains other {% data variables.product.prodname_code_scanning %} workflows you can use. {% if currentVersion == "free-pro-team@latest" %}You can find a selection of these on the "Get started with {% data variables.product.prodname_code_scanning %}" page, which you can access from the **{% octicon "shield" aria-label="The shield symbol" %} Security** tab.{% endif %} The specific examples given in this article relate to the {% data variables.product.prodname_codeql_workflow %} file. - -### Editing a {% data variables.product.prodname_code_scanning %} workflow - -{% data variables.product.prodname_dotcom %} saves workflow files in the _.github/workflows_ directory of your repository. You can find a workflow you have added by searching for its file name. For example, by default, the workflow file for {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} is called _codeql-analysis.yml_. - -1. In your repository, browse to the workflow file you want to edit. -1. In the upper right corner of the file view, to open the workflow editor, click {% octicon "pencil" aria-label="The edit icon" %}. -![Edit workflow file button](/assets/images/help/repository/code-scanning-edit-workflow-button.png) -1. After you have edited the file, click **Start commit** and complete the "Commit changes" form. You can choose to commit directly to the current branch, or create a new branch and start a pull request. -![Commit update to codeql.yml workflow](/assets/images/help/repository/code-scanning-workflow-update.png) - -For more information about editing workflow files, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -### Configuring frequency - -You can configure the {% data variables.product.prodname_codeql_workflow %} to scan code on a schedule or when specific events occur in a repository. - -Scanning code when someone pushes a change, and whenever a pull request is created, prevents developers from introducing new vulnerabilities and errors into the code. Scanning code on a schedule informs you about the latest vulnerabilities and errors that {% data variables.product.company_short %}, security researchers, and the community discover, even when developers aren't actively maintaining the repository. - -#### Scanning on push - -By default, the {% data variables.product.prodname_codeql_workflow %} uses the `on.push` event to trigger a code scan on every push to the default branch of the repository and any protected branches. For {% data variables.product.prodname_code_scanning %} to be triggered on a specified branch, the workflow must exist in that branch. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#on)." - -#### Scanning pull requests - -The default {% data variables.product.prodname_codeql_workflow %} uses the `pull_request` event to trigger a code scan on pull requests targeted against the default branch. {% if currentVersion ver_gt "enterprise-server@2.21" %}The `pull_request` event is not triggered if the pull request was opened from a private fork.{% else %}If a pull request is from a private fork, the `pull_request` event will only be triggered if you've selected the "Run workflows from fork pull requests" option in the repository settings. For more information, see "[Disabling or limiting {% data variables.product.prodname_actions %} for a repository](/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository#enabling-workflows-for-private-repository-forks)."{% endif %} - -For more information about the `pull_request` event, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestbranchestags)." - -#### Avoiding unnecessary scans of pull requests - -You might want to avoid a code scan being triggered on specific pull requests targeted against the default branch, irrespective of which files have been changed. You can configure this by specifying `on:pull_request:paths-ignore` or `on:pull_request:paths` in the {% data variables.product.prodname_code_scanning %} workflow. For example, if the only changes in a pull request are to files with the file extensions `.md` or `.txt` you can use the following `paths-ignore` array. - -``` yaml -on: - push: - branches: [main, protected] - pull_request: - branches: [main] - paths-ignore: - - '**/*.md' - - '**/*.txt' -``` - -{% note %} - -**Notes** - -* `on:pull_request:paths-ignore` and `on:pull_request:paths` set conditions that determine whether the actions in the workflow will run on a pull request. They don't determine what files will be analyzed when the actions _are_ run. When a pull request contains any files that are not matched by `on:pull_request:paths-ignore` or `on:pull_request:paths`, the workflow runs the actions and scans all of the files changed in the pull request, including those matched by `on:pull_request:paths-ignore` or `on:pull_request:paths`, unless the files have been excluded. For information on how to exclude files from analysis, see "[Specifying directories to scan](#specifying-directories-to-scan)." -* For {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} workflow files, don't use the `paths-ignore` or `paths` keywords with the `on:push` event as this is likely to cause missing analyses. For accurate results, {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} needs to be able to compare new changes with the analysis of the previous commit. - -{% endnote %} - -For more information about using `on:pull_request:paths-ignore` and `on:pull_request:paths` to determine when a workflow will run for a pull request, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths)." - -#### Scanning on a schedule - -If you use the default {% data variables.product.prodname_codeql_workflow %}, the workflow will scan the code in your repository once a week, in addition to the scans triggered by events. To adjust this schedule, edit the `cron` value in the workflow. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onschedule)." - -{% note %} - -**Note**: {% data variables.product.prodname_dotcom %} only runs scheduled jobs that are in workflows on the default branch. Changing the schedule in a workflow on any other branch has no effect until you merge the branch into the default branch. - -{% endnote %} - -#### Example - -The following example shows a {% data variables.product.prodname_codeql_workflow %} for a particular repository that has a default branch called `main` and one protected branch called `protected`. - -``` yaml -on: - push: - branches: [main, protected] - pull_request: - branches: [main] - schedule: - - cron: '0 15 * * 0' -``` - -This workflow scans: -* Every push to the default branch and the protected branch -* Every pull request to the default branch -* The default branch at 3 P.M. every Sunday - -### Specifying an operating system - -If your code requires a specific operating system to compile, you can configure the operating system in your {% data variables.product.prodname_codeql_workflow %}. Edit the value of `jobs.analyze.runs-on` to specify the operating system for the machine that runs your {% data variables.product.prodname_code_scanning %} actions. {% if currentVersion ver_gt "enterprise-server@2.21" %}You specify the operating system by using an appropriate label as the second element in a two-element array, after `self-hosted`.{% else %} - -If you choose to use a self-hosted runner for code scanning, you can specify an operating system by using an appropriate label as the second element in a two-element array, after `self-hosted`.{% endif %} - -``` yaml -jobs: - analyze: - name: Analyze - runs-on: [self-hosted, ubuntu-latest] -``` - -{% if currentVersion == "free-pro-team@latest" %}For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners)" and "[Adding self-hosted runners](/actions/hosting-your-own-runners/adding-self-hosted-runners)."{% endif %} - -{% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} supports the latest versions of Ubuntu, Windows, and macOS. Typical values for this setting are therefore: `ubuntu-latest`, `windows-latest`, and `macos-latest`. For more information, see {% if currentVersion ver_gt "enterprise-server@2.21" %}"[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#self-hosted-runners)" and "[Using labels with self-hosted runners](/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners){% else %}"[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on){% endif %}." - -{% if currentVersion ver_gt "enterprise-server@2.21" %}You must ensure that Git is in the PATH variable on your self-hosted runners.{% else %}If you use a self-hosted runner, you must ensure that Git is in the PATH variable.{% endif %} - -### Changing the languages that are analyzed - -{% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} automatically detects code written in the supported languages. - -{% data reusables.code-scanning.supported-languages %} - -The default {% data variables.product.prodname_codeql_workflow %} file contains a build matrix called `language` which lists the languages in your repository that are analyzed. {% data variables.product.prodname_codeql %} automatically populates this matrix when you add {% data variables.product.prodname_code_scanning %} to a repository. Using the `language` matrix optimizes {% data variables.product.prodname_codeql %} to run each analysis in parallel. We recommend that all workflows adopt this configuration due to the performance benefits of parallelizing builds. For more information about build matrices, see "[Managing complex workflows](/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix)." - -{% data reusables.code-scanning.specify-language-to-analyze %} - -If your workflow uses the `language` matrix then {% data variables.product.prodname_codeql %} is hardcoded to analyze only the languages in the matrix. To change the languages you want to analyze, edit the value of the matrix variable. You can remove a language to prevent it being analyzed or you can add a language that was not present in the repository when {% data variables.product.prodname_code_scanning %} was set up. For example, if the repository initially only contained JavaScript when {% data variables.product.prodname_code_scanning %} was set up, and you later added Python code, you will need to add `python` to the matrix. - -```yaml -jobs: - analyze: - name: Analyze - ... - strategy: - fail-fast: false - matrix: - language: ['javascript', 'python'] -``` - -If your workflow does not contain a matrix called `language`, then {% data variables.product.prodname_codeql %} is configured to run analysis sequentially. If you don't specify languages in the workflow, {% data variables.product.prodname_codeql %} automatically detects, and attempts to analyze, any supported languages in the repository. If you want to choose which languages to analyze, without using a matrix, you can use the `languages` parameter under the `init` action. - -```yaml -- uses: github/codeql-action/init@v1 - with: - languages: cpp, csharp, python -``` -{% if currentVersion == "free-pro-team@latest" %} -### Analyzing Python dependencies - -For GitHub-hosted runners that use Linux only, the {% data variables.product.prodname_codeql_workflow %} will try to auto-install Python dependencies to give more results for the CodeQL analysis. You can control this behavior by specifying the `setup-python-dependencies` parameter for the action called by the "Initialize CodeQL" step. By default, this parameter is set to `true`: - -- If the repository contains code written in Python, the "Initialize CodeQL" step installs the necessary dependencies on the GitHub-hosted runner. If the auto-install succeeds, the action also sets the environment variable `CODEQL_PYTHON` to the Python executable file that includes the dependencies. - -- If the repository doesn't have any Python dependencies, or the dependencies are specified in an unexpected way, you'll get a warning and the action will continue with the remaining jobs. The action can run successfully even when there are problems interpreting dependencies, but the results may be incomplete. - -Alternatively, you can install Python dependencies manually on any operating system. You will need to add `setup-python-dependencies` and set it to `false`, as well as set `CODEQL_PYTHON` to the Python executable that includes the dependencies, as shown in this workflow extract: - -```yaml -jobs: - CodeQL-Build: - - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.x' - - name: Install dependencies - run: | - python -m pip install --upgrade pip - if [ -f requirements.txt ]; - then pip install -r requirements.txt; - fi - # Set the `CODEQL-PYTHON` environment variable to the Python executable - # that includes the dependencies - echo "CODEQL_PYTHON=$(which python)" >> $GITHUB_ENV - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: python - # Override the default behavior so that the action doesn't attempt - # to auto-install Python dependencies - setup-python-dependencies: false -``` -{% endif %} - -### Running additional queries - -{% data reusables.code-scanning.run-additional-queries %} - -To add one or more queries, add a `with: queries:` entry within the `uses: github/codeql-action/init@v1` section of the workflow. If the queries are in a private repository, use the `external-repository-token` parameter to specify a token that has access to the private repository. - -{% raw %} -``` yaml -- uses: github/codeql-action/init@v1 - with: - queries: COMMA-SEPARATED LIST OF PATHS - # Optional. Provide a token to access private repositories. - external-repository-token: ${{ secrets.ACCESS_TOKEN }} -``` -{% endraw %} - -You can also specify query suites in the value of `queries`. Query suites are collections of queries, usually grouped by purpose or language. - -{% data reusables.code-scanning.codeql-query-suites %} - -If you are also using a configuration file for custom settings, any additional queries specified in your workflow are used instead of any specified in the configuration file. If you want to run the combined set of additional queries specified here and in the configuration file, prefix the value of `queries` in the workflow with the `+` symbol. For more information, see "[Using a custom configuration file](#using-a-custom-configuration-file)." - -In the following example, the `+` symbol ensures that the specified additional queries are used together with any queries specified in the referenced configuration file. - -{% raw %} -``` yaml -- uses: github/codeql-action/init@v1 - with: - config-file: ./.github/codeql/codeql-config.yml - queries: +security-and-quality,octo-org/python-qlpack/show_ifs.ql@main - external-repository-token: ${{ secrets.ACCESS_TOKEN }} -``` -{% endraw %} - -### Using a custom configuration file - -As an alternative to specifying which queries to run in the workflow file, you can do this in a separate configuration file. You can also use a configuration file to disable the default queries and to specify which directories to scan during analysis. - -In the workflow file, use the `config-file` parameter of the `init` action to specify the path to the configuration file you want to use. This example loads the configuration file _./.github/codeql/codeql-config.yml_. - -``` yaml -- uses: github/codeql-action/init@v1 - with: - config-file: ./.github/codeql/codeql-config.yml -``` - -{% data reusables.code-scanning.custom-configuration-file %} - -If the configuration file is located in an external private repository, use the `external-repository-token` parameter of the `init` action to specify a token that has access to the private repository. - -{% raw %} -```yaml -uses: github/codeql-action/init@v1 -with: - external-repository-token: ${{ secrets.ACCESS_TOKEN }} -``` -{% endraw %} - -The settings in the configuration file are written in YAML format. - -#### Specifying additional queries - -You specify additional queries in a `queries` array. Each element of the array contains a `uses` parameter with a value that identifies a single query file, a directory containing query files, or a query suite definition file. - -``` yaml -queries: - - uses: ./my-basic-queries/example-query.ql - - uses: ./my-advanced-queries - - uses: ./codeql-qlpacks/complex-python-qlpack/rootAndBar.qls -``` - -Optionally, you can give each array element a name, as shown in the example configuration files below. - -For more information about additional queries, see "[Running additional queries](#running-additional-queries)" above. - -#### Disabling the default queries - -If you only want to run custom queries, you can disable the default security queries by using `disable-default-queries: true`. - -#### Specifying directories to scan - -For the interpreted languages that {% data variables.product.prodname_codeql %} supports (Python and JavaScript/TypeScript), you can restrict {% data variables.product.prodname_code_scanning %} to files in specific directories by adding a `paths` array to the configuration file. You can exclude the files in specific directories from analysis by adding a `paths-ignore` array. - -``` yaml -paths: - - src -paths-ignore: - - src/node_modules - - '**/*.test.js' -``` - -{% note %} - -**Note**: - -* The `paths` and `paths-ignore` keywords, used in the context of the {% data variables.product.prodname_code_scanning %} configuration file, should not be confused with the same keywords when used for `on..paths` in a workflow. When they are used to modify `on.` in a workflow, they determine whether the actions will be run when someone modifies code in the specified directories. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths)." -* `**` characters can only be at the start or end of a line, or surrounded by slashes, and you can't mix `**` and other characters. For example, `foo/**`, `**/foo`, and `foo/**/bar` are all allowed syntax, but `**foo` isn't. However you can use single stars along with other characters, as shown in the example. You'll need to quote anything that contains a `*` character. - -{% endnote %} - -For compiled languages, if you want to limit {% data variables.product.prodname_code_scanning %} to specific directories in your project, you must specify appropriate build steps in the workflow. The commands you need to use to exclude a directory from the build will depend on your build system. For more information, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." - -You can quickly analyze small portions of a monorepo when you modify code in specific directories. You'll need to both exclude directories in your build steps and use the `paths-ignore` and `paths` keywords for [`on.`](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths) in your workflow. - -#### Example configuration files - -{% data reusables.code-scanning.example-configuration-files %} - -### Configuring {% data variables.product.prodname_code_scanning %} for compiled languages - -{% data reusables.code-scanning.autobuild-compiled-languages %} {% data reusables.code-scanning.analyze-go %} - -{% data reusables.code-scanning.autobuild-add-build-steps %} For more information about how to configure {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} for compiled languages, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages)." - -### Uploading {% data variables.product.prodname_code_scanning %} data to {% data variables.product.prodname_dotcom %} - -{% data variables.product.prodname_dotcom %} can display code analysis data generated externally by a third-party tool. You can upload code analysis data with the `upload-sarif` action. For more information, see "[Uploading a SARIF file to GitHub](/code-security/secure-coding/uploading-a-sarif-file-to-github)." diff --git a/content/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system.md b/content/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system.md deleted file mode 100644 index 5b8928288c..0000000000 --- a/content/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system.md +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: Configuring CodeQL code scanning in your CI system -shortTitle: Configuring in your CI -intro: 'You can configure how the {% data variables.product.prodname_codeql_runner %} scans the code in your project and uploads the results to {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.code-scanning %}' -miniTocMaxHeadingLevel: 4 -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta-codeql-runner %} -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning %} - -### About configuring {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system - -To integrate {% data variables.product.prodname_code_scanning %} into your CI system, you can use the {% data variables.product.prodname_codeql_runner %}. For more information, see "[Running {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)." - -In general, you invoke the {% data variables.product.prodname_codeql_runner %} as follows. - -```shell -$ /path/to-runner/codeql-runner-OS -``` - -`/path/to-runner/` depends on where you've downloaded the {% data variables.product.prodname_codeql_runner %} on your CI system. `codeql-runner-OS` depends on the operating system you use. -There are three versions of the {% data variables.product.prodname_codeql_runner %}, `codeql-runner-linux`, `codeql-runner-macos`, and `codeql-runner-win`, for Linux, macOS, and Windows systems respectively. - -To customize the way the {% data variables.product.prodname_codeql_runner %} scans your code, you can use flags, such as `--languages` and `--queries`, or you can specify custom settings in a separate configuration file. - -### Scanning pull requests - -Scanning code whenever a pull request is created prevents developers from introducing new vulnerabilities and errors into the code. - -To scan a pull request, run the `analyze` command and use the `--ref` flag to specify the pull request. The reference is `refs/pull//head` or `refs/pull//merge`, depending on whether you have checked out the HEAD commit of the pull request branch or a merge commit with the base branch. - -```shell -$ /path/to-runner/codeql-runner-linux analyze --ref refs/pull/42/head -``` - -### Overriding automatic language detection - -The {% data variables.product.prodname_codeql_runner %} automatically detects and scans code written in the supported languages. - -{% data reusables.code-scanning.supported-languages %} - -{% data reusables.code-scanning.specify-language-to-analyze %} - -To override automatic language detection, run the `init` command with the `--languages` flag, followed by a comma-separated list of language keywords. The keywords for the supported languages are `cpp`, `csharp`, `go`, `java`, `javascript`, and `python`. - -```shell -$ /path/to-runner/codeql-runner-linux init --languages cpp,java -``` - -### Running additional queries - -{% data reusables.code-scanning.run-additional-queries %} - -{% data reusables.code-scanning.codeql-query-suites %} - -To add one or more queries, pass a comma-separated list of paths to the `--queries` flag of the `init` command. You can also specify additional queries in a configuration file. - -If you also are using a configuration file for custom settings, and you are also specifying additional queries with the `--queries` flag, the {% data variables.product.prodname_codeql_runner %} uses the additional queries specified with the `--queries` flag instead of any in the configuration file. -If you want to run the combined set of additional queries specified with the flag and in the configuration file, prefix the value passed to `--queries` with the `+` symbol. -For more information, see "[Using a custom configuration file](#using-a-custom-configuration-file)." - -In the following example, the `+` symbol ensures that the {% data variables.product.prodname_codeql_runner %} uses the additional queries together with any queries specified in the referenced configuration file. - -```shell -$ /path/to-runner/codeql-runner-linux init --config-file .github/codeql/codeql-config.yml - --queries +security-and-quality,octo-org/python-qlpack/show_ifs.ql@main -``` - -### Using a custom configuration file - -Instead of passing additional information to the {% data variables.product.prodname_codeql_runner %} commands, you can specify custom settings in a separate configuration file. - -The configuration file is a YAML file. It uses syntax similar to the workflow syntax for {% data variables.product.prodname_actions %}, as illustrated in the examples below. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions)." - -Use the `--config-file` flag of the `init` command to specify the configuration file. The value of `--config-file` is the path to the configuration file that you want to use. This example loads the configuration file _.github/codeql/codeql-config.yml_. - -```shell -$ /path/to-runner/codeql-runner-linux init --config-file .github/codeql/codeql-config.yml -``` - -{% data reusables.code-scanning.custom-configuration-file %} - -#### Example configuration files - -{% data reusables.code-scanning.example-configuration-files %} - -### Configuring {% data variables.product.prodname_code_scanning %} for compiled languages - -For the compiled languages C/C++, C#, and Java, {% data variables.product.prodname_codeql %} builds the code before analyzing it. {% data reusables.code-scanning.analyze-go %} - -For many common build systems, the {% data variables.product.prodname_codeql_runner %} can build the code automatically. To attempt to build the code automatically, run `autobuild` between the `init` and `analyze` steps. Note that if your repository requires a specific version of a build tool, you may need to install the build tool manually first. - -The `autobuild` process only ever attempts to build _one_ compiled language for a repository. The language automatically selected for analysis is the language with the most files. If you want to choose a language explicitly, use the `--language` flag of the `autobuild` command. - -```shell -$ /path/to-runner/codeql-runner-linux autobuild --language csharp -``` - -If the `autobuild` command can't build your code, you can run the build steps yourself, between the `init` and `analyze` steps. For more information, see "[Running {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system#compiled-language-example)." - -### Uploading {% data variables.product.prodname_code_scanning %} data to {% data variables.product.prodname_dotcom %} - -By default, the {% data variables.product.prodname_codeql_runner %} uploads results from {% data variables.product.prodname_code_scanning %} when you run the `analyze` command. You can also upload SARIF files separately, by using the `upload` command. - -Once you've uploaded the data, {% data variables.product.prodname_dotcom %} displays the alerts in your repository. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." - -### {% data variables.product.prodname_codeql_runner %} command reference - -The {% data variables.product.prodname_codeql_runner %} supports the following commands and flags. - -#### `init` - -Initializes the {% data variables.product.prodname_codeql_runner %} and creates a {% data variables.product.prodname_codeql %} database for each language to be analyzed. - -| Flag | Required | Input value | -| ---- |:--------:| ----------- | -| `--repository` | ✓ | Name of the repository to initialize. | -| `--github-url` | ✓ | URL of the {% data variables.product.prodname_dotcom %} instance where your repository is hosted. | -| `--github-auth` | ✓ | A {% data variables.product.prodname_github_apps %} token or personal access token. | -| `--languages` | | Comma-separated list of languages to analyze. By default, the {% data variables.product.prodname_codeql_runner %} detects and analyzes all supported languages in the repository. | -| `--queries` | | Comma-separated list of additional queries to run, in addition to the default suite of security queries. | -| `--config-file` | | Path to custom configuration file. | -| `--codeql-path` | | Path to a copy of the {% data variables.product.prodname_codeql %} CLI executable to use. By default, the {% data variables.product.prodname_codeql_runner %} downloads a copy. | -| `--temp-dir` | | Directory where temporary files are stored. The default is `./codeql-runner`. | -| `--tools-dir` | | Directory where {% data variables.product.prodname_codeql %} tools and other files are stored between runs. The default is a subdirectory of the home directory. | -| `--checkout-path` | | The path to the checkout of your repository. The default is the current working directory. | -| `--debug` | | None. Prints more verbose output. | -| `-h`, `--help` | | None. Displays help for the command. | - -#### `autobuild` - -Attempts to build the code for the compiled languages C/C++, C#, and Java. For those languages, {% data variables.product.prodname_codeql %} builds the code before analyzing it. Run `autobuild` between the `init` and `analyze` steps. - -| Flag | Required | Input value | -| ---- |:--------:| ----------- | -| `--language` | | The language to build. By default, the {% data variables.product.prodname_codeql_runner %} builds the compiled language with the most files. | -| `--temp-dir` | | Directory where temporary files are stored. The default is `./codeql-runner`. | -| `--debug` | | None. Prints more verbose output. | -| `-h`, `--help` | | None. Displays help for the command. | - -#### `analyze` - -Analyzes the code in the {% data variables.product.prodname_codeql %} databases and uploads results to {% data variables.product.product_name %}. - -| Flag | Required | Input value | -| ---- |:--------:| ----------- | -| `--repository` | ✓ | Name of the repository to analyze. | -| `--commit` | ✓ | SHA of the commit to analyze. In Git and in Azure DevOps, this corresponds to the value of `git rev-parse HEAD`. In Jenkins, this corresponds to `$GIT_COMMIT`. | -| `--ref` | ✓ | Name of the reference to analyze, for example `refs/heads/main` or `refs/pull/42/merge`. In Git or in Jenkins, this corresponds to the value of `git symbolic-ref HEAD`. In Azure DevOps, this corresponds to `$(Build.SourceBranch)`. | -| `--github-url` | ✓ | URL of the {% data variables.product.prodname_dotcom %} instance where your repository is hosted. | -| `--github-auth` | ✓ | A {% data variables.product.prodname_github_apps %} token or personal access token. | -| `--checkout-path` | | The path to the checkout of your repository. The default is the current working directory. | -| `--no-upload` | | None. Stops the {% data variables.product.prodname_codeql_runner %} from uploading the results to {% data variables.product.product_name %}. | -| `--output-dir` | | Directory where the output SARIF files are stored. The default is in the directory of temporary files. | -| `--ram` | | Amount of memory to use when running queries. The default is to use all available memory. | -| `--no-add-snippets` | | None. Excludes code snippets from the SARIF output. | -| `--threads` | | Number of threads to use when running queries. The default is to use all available cores. | -| `--temp-dir` | | Directory where temporary files are stored. The default is `./codeql-runner`. | -| `--debug` | | None. Prints more verbose output. | -| `-h`, `--help` | | None. Displays help for the command. | - -#### `upload` - -Uploads SARIF files to {% data variables.product.product_name %}. - -{% note %} - -**Note**: If you analyze code with the CodeQL runner, the `analyze` command uploads SARIF results by default. You can use the `upload` command to upload SARIF results that were generated by other tools. - -{% endnote %} - -| Flag | Required | Input value | -| ---- |:--------:| ----------- | -| `--sarif-file` | ✓ | SARIF file to upload, or a directory containing multiple SARIF files. | -| `--repository` | ✓ | Name of the repository that was analyzed. | -| `--commit` | ✓ | SHA of the commit that was analyzed. In Git and in Azure DevOps, this corresponds to the value of `git rev-parse HEAD`. In Jenkins, this corresponds to `$GIT_COMMIT`. | -| `--ref` | ✓ | Name of the reference that was analyzed, for example `refs/heads/main` or `refs/pull/42/merge`. In Git or in Jenkins, this corresponds to the value of `git symbolic-ref HEAD`. In Azure DevOps, this corresponds to `$(Build.SourceBranch)`. | -| `--github-url` | ✓ | URL of the {% data variables.product.prodname_dotcom %} instance where your repository is hosted. | -| `--github-auth` | ✓ | A {% data variables.product.prodname_github_apps %} token or personal access token. | -| `--checkout-path` | | The path to the checkout of your repository. The default is the current working directory. | -| `--debug` | | None. Prints more verbose output. | -| `-h`, `--help` | | None. Displays help for the command. | diff --git a/content/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages.md b/content/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages.md deleted file mode 100644 index b3e6994dbf..0000000000 --- a/content/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Configuring the CodeQL workflow for compiled languages -shortTitle: Configuring for compiled languages -intro: 'You can configure how {% data variables.product.prodname_dotcom %} uses the {% data variables.product.prodname_codeql_workflow %} to scan code written in compiled languages for vulnerabilities and errors.' -product: '{% data reusables.gated-features.code-scanning %}' -permissions: 'If you have write permissions to a repository, you can configure {% data variables.product.prodname_code_scanning %} for that repository.' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning-actions %} - -### About the {% data variables.product.prodname_codeql_workflow %} and compiled languages - -You set up {% data variables.product.prodname_dotcom %} to run {% data variables.product.prodname_code_scanning %} for your repository by adding a {% data variables.product.prodname_actions %} workflow to the repository. For {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}, you add the {% data variables.product.prodname_codeql_workflow %}. For more information, see "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)." - -{% data reusables.code-scanning.edit-workflow %} -For general information about configuring {% data variables.product.prodname_code_scanning %} and editing workflow files, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)" and "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -### About autobuild for {% data variables.product.prodname_codeql %} - -Code scanning works by running queries against one or more databases. Each database contains a representation of all of the code in a single language in your repository. For the compiled languages C/C++, C#, and Java, the process of populating this database involves building the code and extracting data. {% data reusables.code-scanning.analyze-go %} - -{% data reusables.code-scanning.autobuild-compiled-languages %} - -If your workflow uses a `language` matrix, `autobuild` attempts to build each of the compiled languages listed in the matrix. Without a matrix `autobuild` attempts to build the supported compiled language that has the most source files in the repository. With the exception of Go, analysis of other compiled languages in your repository will fail unless you supply explicit build commands. - -{% note %} - -{% if currentVersion == "github-ae@latest" %}**Note**: For instructions on how to make sure your {% data variables.actions.hosted_runner %} has the required software installed, see "[Creating custom images](/actions/using-github-hosted-runners/creating-custom-images)." -{% else %} -**Note**: If you use self-hosted runners for {% data variables.product.prodname_actions %}, you may need to install additional software to use the `autobuild` process. Additionally, if your repository requires a specific version of a build tool, you may need to install it manually. For more information, see "[Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software)". -{% endif %} - -{% endnote %} - -#### C/C++ - -| Supported system type | System name | -|----|----| -| Operating system | Windows, macOS, and Linux | -| Build system | Windows: MSbuild and build scripts
    Linux and macOS: Autoconf, Make, CMake, qmake, Meson, Waf, SCons, Linux Kbuild, and build scripts | - -The behavior of the `autobuild` step varies according to the operating system that the extraction runs on. On Windows, the `autobuild` step attempts to autodetect a suitable build method for C/C++ using the following approach: - -1. Invoke `MSBuild.exe` on the solution (`.sln`) or project (`.vcxproj`) file closest to the root. -If `autobuild` detects multiple solution or project files at the same (shortest) depth from the top level directory, it will attempt to build all of them. -2. Invoke a script that looks like a build script—_build.bat_, _build.cmd_, _and build.exe_ (in that order). - -On Linux and macOS, the `autobuild` step reviews the files present in the repository to determine the build system used: - -1. Look for a build system in the root directory. -2. If none are found, search subdirectories for a unique directory with a build system for C/C++. -3. Run an appropriate command to configure the system. - -#### C# - -| Supported system type | System name | -|----|----| -| Operating system | Windows and Linux | -| Build system | .NET and MSbuild, as well as build scripts | - -The `autobuild` process attempts to autodetect a suitable build method for C# using the following approach: - -1. Invoke `dotnet build` on the solution (`.sln`) or project (`.csproj`) file closest to the root. -2. Invoke `MSbuild` (Linux) or `MSBuild.exe` (Windows) on the solution or project file closest to the root. -If `autobuild` detects multiple solution or project files at the same (shortest) depth from the top level directory, it will attempt to build all of them. -3. Invoke a script that looks like a build script—_build_ and _build.sh_ (in that order, for Linux) or _build.bat_, _build.cmd_, _and build.exe_ (in that order, for Windows). - -#### Java - -| Supported system type | System name | -|----|----| -| Operating system | Windows, macOS, and Linux (no restriction) | -| Build system | Gradle, Maven and Ant | - -The `autobuild` process tries to determine the build system for Java codebases by applying this strategy: - -1. Search for a build file in the root directory. Check for Gradle then Maven then Ant build files. -2. Run the first build file found. If both Gradle and Maven files are present, the Gradle file is used. -3. Otherwise, search for build files in direct subdirectories of the root directory. If only one subdirectory contains build files, run the first file identified in that subdirectory (using the same preference as for 1). If more than one subdirectory contains build files, report an error. - -### Adding build steps for a compiled language - -{% data reusables.code-scanning.autobuild-add-build-steps %} For information on how to edit the workflow file, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning#editing-a-code-scanning-workflow)." - -After removing the `autobuild` step, uncomment the `run` step and add build commands that are suitable for your repository. The workflow `run` step runs command-line programs using the operating system's shell. You can modify these commands and add more commands to customize the build process. - -``` yaml -- run: | - make bootstrap - make release -``` - -For more information about the `run` keyword, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun)." - -If your repository contains multiple compiled languages, you can specify language-specific build commands. For example, if your repository contains C/C++, C# and Java, and `autobuild` correctly builds C/C++ and C# but fails to build Java, you could use the following configuration in your workflow, after the `init` step. This specifies build steps for Java while still using `autobuild` for C/C++ and C#: - -```yaml -- if: matrix.language == 'cpp' || matrix.language == 'csharp' - name: Autobuild - uses: github/codeql-action/autobuild@v1 - -- if: matrix.language == 'java' - name: Build Java - run: | - make bootstrap - make release -``` - -For more information about the `if` conditional, see "[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsif)." - -For more tips and tricks about why `autobuild` won't build your code, see "[Troubleshooting the {% data variables.product.prodname_codeql %} workflow](/code-security/secure-coding/troubleshooting-the-codeql-workflow)." - -If you added manual build steps for compiled languages and {% data variables.product.prodname_code_scanning %} is still not working on your repository, contact {% data variables.contact.contact_support %}. diff --git a/content/code-security/secure-coding/index.md b/content/code-security/secure-coding/index.md deleted file mode 100644 index fa2db6c762..0000000000 --- a/content/code-security/secure-coding/index.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Finding security vulnerabilities and errors in your code -shortTitle: Secure coding -intro: 'Keep your code secure by using secret scanning to identify and fix potential security vulnerabilities and other errors in your code.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -### Table of Contents - -{% topic_link_in_list /automatically-scanning-your-code-for-vulnerabilities-and-errors %} - {% link_in_list /about-code-scanning %} - {% link_in_list /triaging-code-scanning-alerts-in-pull-requests %} - {% link_in_list /setting-up-code-scanning-for-a-repository %} - {% link_in_list /managing-code-scanning-alerts-for-your-repository %} - {% link_in_list /configuring-code-scanning %} - {% link_in_list /configuring-the-codeql-workflow-for-compiled-languages %} - {% link_in_list /troubleshooting-the-codeql-workflow %} - {% link_in_list /running-codeql-code-scanning-in-a-container %} -{% topic_link_in_list /integrating-with-code-scanning %} - {% link_in_list /about-integration-with-code-scanning %} - {% link_in_list /uploading-a-sarif-file-to-github %} - {% link_in_list /sarif-support-for-code-scanning %} -{% topic_link_in_list /using-codeql-code-scanning-with-your-existing-ci-system %} - {% link_in_list /running-codeql-code-scanning-in-your-ci-system %} - {% link_in_list /configuring-codeql-code-scanning-in-your-ci-system %} - {% link_in_list /troubleshooting-codeql-code-scanning-in-your-ci-system %} diff --git a/content/code-security/secure-coding/integrating-with-code-scanning.md b/content/code-security/secure-coding/integrating-with-code-scanning.md deleted file mode 100644 index 65712c40a4..0000000000 --- a/content/code-security/secure-coding/integrating-with-code-scanning.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Integrating with code scanning -shortTitle: Integration -intro: 'You can integrate third-party code analysis tools with {% data variables.product.prodname_dotcom %} {% data variables.product.prodname_code_scanning %} by uploading data as SARIF files.' -mapTopic: true -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - diff --git a/content/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository.md b/content/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository.md deleted file mode 100644 index 6e1f1f93e3..0000000000 --- a/content/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Managing code scanning alerts for your repository -shortTitle: Managing alerts -intro: 'From the security view, you can view, fix, {% if currentVersion == "enterprise-server@2.22" %}or close{% else %}dismiss, or delete{% endif %} alerts for potential vulnerabilities or errors in your project''s code.' -product: '{% data reusables.gated-features.code-scanning %}' -permissions: 'If you have write permission to a repository you can manage {% data variables.product.prodname_code_scanning %} alerts for that repository.' -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository ---- - -{% data reusables.code-scanning.beta %} - -### About alerts from {% data variables.product.prodname_code_scanning %} - -You can set up {% data variables.product.prodname_code_scanning %} to check the code in a repository using the default {% data variables.product.prodname_codeql %} analysis, a third-party analysis, or multiple types of analysis. When the analysis is complete, the resulting alerts are displayed alongside each other in the security view of the repository. Results from third-party tools or from custom queries may not include all of the properties that you see for alerts detected by {% data variables.product.company_short %}'s default {% data variables.product.prodname_codeql %} analysis. For more information, see "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)." - -By default, {% data variables.product.prodname_code_scanning %} analyzes your code periodically on the default branch and during pull requests. For information about managing alerts on a pull request, see "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." - -{% data reusables.code-scanning.upload-sarif-alert-limit %} - -### About alerts details - -Each alert highlights a problem with the code and the name of the tool that identified it. You can see the line of code that triggered the alert, as well as properties of the alert, such as the severity and the nature of the problem. Alerts also tell you when the issue was first introduced. For alerts identified by {% data variables.product.prodname_codeql %} analysis, you will also see information on how to fix the problem. - -![Example alert from {% data variables.product.prodname_code_scanning %}](/assets/images/help/repository/code-scanning-alert.png) - -If you set up {% data variables.product.prodname_code_scanning %} using {% data variables.product.prodname_codeql %}, this can also detect data-flow problems in your code. Data-flow analysis finds potential security issues in code, such as: using data insecurely, passing dangerous arguments to functions, and leaking sensitive information. - -When {% data variables.product.prodname_code_scanning %} reports data-flow alerts, {% data variables.product.prodname_dotcom %} shows you how data moves through the code. {% data variables.product.prodname_code_scanning_capc %} allows you to identify the areas of your code that leak sensitive information, and that could be the entry point for attacks by malicious users. - -### Viewing the alerts for a repository - -Anyone with read permission for a repository can see {% data variables.product.prodname_code_scanning %} annotations on pull requests. For more information, see "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." - -You need write permission to view a summary of all the alerts for a repository on the **Security** tab. By default, alerts are shown for the default branch. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-code-scanning-alerts %} -1. Under "{% data variables.product.prodname_code_scanning_capc %}," click the alert you'd like to explore. - ![Summary of alerts](/assets/images/help/repository/code-scanning-click-alert.png) -1. Optionally, if the alert highlights a problem with data flow, click **Show paths** to display the path from the data source to the sink where it's used. - ![The "Show paths" link on an alert](/assets/images/help/repository/code-scanning-show-paths.png) -1. Alerts from {% data variables.product.prodname_codeql %} analysis include a description of the problem. Click **Show more** for guidance on how to fix your code. - ![Details for an alert](/assets/images/help/repository/code-scanning-alert-details.png) - -### Fixing an alert - -Anyone with write permission for a repository can fix an alert by committing a correction to the code. If the repository has {% data variables.product.prodname_code_scanning %} scheduled to run on pull requests, it's best to raise a pull request with your correction. This will trigger {% data variables.product.prodname_code_scanning %} analysis of the changes and test that your fix doesn't introduce any new problems. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)" and "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." - -If you have write permission for a repository, you can view fixed alerts by viewing the summary of alerts and clicking **Closed**. For more information, see "[Viewing the alerts for a repository](#viewing-the-alerts-for-a-repository)." The "Closed" list shows fixed alerts and alerts that users have {% if currentVersion == "enterprise-server@2.22" %}closed{% else %}dismissed{% endif %}. - -Alerts may be fixed in one branch but not in another. You can use the "Branch" drop-down menu, on the summary of alerts, to check whether an alert is fixed in a particular branch. - -![Filtering alerts by branch](/assets/images/help/repository/code-scanning-branch-filter.png) - -{% if currentVersion == "enterprise-server@2.22" %} - -### Closing an alert - -Closing an alert is a way to resolve an alert that you don't think needs to be fixed. {% data reusables.code-scanning.close-alert-examples %} - -{% else %} - -### Dismissing or deleting alerts - -There are two ways of closing an alert. You can fix the problem in the code, or you can dismiss the alert. Alternatively, if you have admin permissions for the repository, you can delete alerts. Deleting alerts is useful in situations where you have set up a {% data variables.product.prodname_code_scanning %} tool and then decided to remove it, or where you have configured {% data variables.product.prodname_codeql %} analysis with a larger set of queries than you want to continue using, and you've then removed some queries from the tool. In both cases, deleting alerts allows you to clean up your {% data variables.product.prodname_code_scanning %} results. You can delete alerts from the summary list within the **Security** tab. - -Dismissing an alert is a way of closing an alert that you don't think needs to be fixed. {% data reusables.code-scanning.close-alert-examples %} You can dismiss alerts from {% data variables.product.prodname_code_scanning %} annotations in code, or from the summary list within the **Security** tab. - -When you dismiss an alert: - -- It's dismissed in all branches. -- The alert is removed from the number of current alerts for your project. -- The alert is moved to the "Closed" list in the summary of alerts, from where you can reopen it, if required. -- The reason why you closed the alert is recorded. -- Next time {% data variables.product.prodname_code_scanning %} runs, the same code won't generate an alert. - -When you delete an alert: - -- It's deleted in all branches. -- The alert is removed from the number of current alerts for your project. -- It is _not_ added to the "Closed" list in the summary of alerts. -- If the code that generated the alert stays the same, and the same {% data variables.product.prodname_code_scanning %} tool runs again without any configuration changes, the alert will be shown again in your analysis results. - -To dismiss or delete alerts: - -{% endif %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-code-scanning-alerts %} -{% if currentVersion == "enterprise-server@2.22" %} -{% data reusables.code-scanning.click-alert-in-list %} -1. Select the **Close** drop-down menu and click a reason for closing the alert. - ![Choosing reason for closing the alert via the Close drop-down](/assets/images/help/repository/code-scanning-alert-close-drop-down.png) - -{% data reusables.code-scanning.false-positive-fix-codeql %} - -{% else %} - -1. If you have admin permissions for the repository, and you want to delete alerts for this {% data variables.product.prodname_code_scanning %} tool, select some or all of the check boxes and click **Delete**. - - ![Deleting alerts](/assets/images/help/repository/code-scanning-delete-alerts.png) - - Optionally, you can use the filters to display a subset of alerts and then delete all matching alerts at once. For example, if you have removed a query from {% data variables.product.prodname_codeql %} analysis, you can use the "Rule" filter to list just the alerts for that query and then select and delete all of those alerts. - - ![Filter alerts by rule](/assets/images/help/repository/code-scanning-filter-by-rule.png) - -1. If you want to dismiss an alert, it's important to explore the alert first, so that you can choose the correct dismissal reason. Click the alert you'd like to explore. - - ![Open an alert from the summary list](/assets/images/help/repository/code-scanning-click-alert.png) - -1. Review the alert, then click **Dismiss** and choose a reason for closing the alert. - ![Choosing a reason for dismissing an alert](/assets/images/help/repository/code-scanning-alert-close-drop-down.png) - - {% data reusables.code-scanning.choose-alert-dismissal-reason %} - - {% data reusables.code-scanning.false-positive-fix-codeql %} - -#### Dismissing multiple alerts at once - -If a project has multiple alerts that you want to dismiss for the same reason, you can bulk dismiss them from the summary of alerts. Typically, you'll want to filter the list and then dismiss all of the matching alerts. For example, you might want to dismiss all of the current alerts in the project that have been tagged for a particular Common Weakness Enumeration (CWE) vulnerability. - -{% endif %} - -### Further reading - -- "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)" -- "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)" -- "[About integration with {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/about-integration-with-code-scanning)" diff --git a/content/code-security/secure-coding/running-codeql-code-scanning-in-a-container.md b/content/code-security/secure-coding/running-codeql-code-scanning-in-a-container.md deleted file mode 100644 index 644c885501..0000000000 --- a/content/code-security/secure-coding/running-codeql-code-scanning-in-a-container.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Running CodeQL code scanning in a container -shortTitle: '{% data variables.product.prodname_code_scanning_capc %} in a container' -intro: 'You can run {% data variables.product.prodname_code_scanning %} in a container by ensuring that all processes run in the same container.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta %} - -### About {% data variables.product.prodname_code_scanning %} with a containerized build - -If you're setting up {% data variables.product.prodname_code_scanning %} for a compiled language, and you're building the code in a containerized environment, the analysis may fail with the error message "No source code was seen during the build." This indicates that {% data variables.product.prodname_codeql %} was unable to monitor your code as it was compiled. - -You must run {% data variables.product.prodname_codeql %} in the same container in which you build your code. This applies whether you are using the {% data variables.product.prodname_codeql_runner %}, or {% data variables.product.prodname_actions %}. If you're using the {% data variables.product.prodname_codeql_runner %}, run it in the container where your code builds. For more information about the {% data variables.product.prodname_codeql_runner %}, see "[Running {% data variables.product.prodname_codeql %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)." If you're using {% data variables.product.prodname_actions %}, configure your workflow to run all the actions in the same container. For more information, see "[Example workflow](#example-workflow)." - -### Dependencies - -You may have difficulty running {% data variables.product.prodname_code_scanning %} if the container you're using is missing certain dependencies (for example, Git must be installed and added to the PATH variable). If you encounter dependency issues, review the list of software typically included on {% data variables.product.prodname_dotcom %}'s virtual environments. For more information, see the version-specific `readme` files in these locations: - -* Linux: https://github.com/actions/virtual-environments/tree/main/images/linux -* macOS: https://github.com/actions/virtual-environments/tree/main/images/macos -* Windows: https://github.com/actions/virtual-environments/tree/main/images/win - -### Example workflow - -This sample workflow uses {% data variables.product.prodname_actions %} to run {% data variables.product.prodname_codeql %} analysis in a containerized environment. The value of `container.image` identifies the container to use. In this example the image is named `codeql-container`, with a tag of `f0f91db`. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontainer)." - -``` yaml -name: "{% data variables.product.prodname_codeql %}" - -on: - push: - branches: [main] - pull_request: - branches: [main] - schedule: - - cron: '0 0 * * 0' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - language: [java] - - # Specify the container in which actions will run - container: - image: codeql-container:f0f91db - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Initialize {% data variables.product.prodname_codeql %} - uses: github/codeql-action/init@v1 - with: - languages: {% raw %}${{ matrix.language }}{% endraw %} - - name: Build - run: | - ./configure - make - - name: Perform {% data variables.product.prodname_codeql %} Analysis - uses: github/codeql-action/analyze@v1 -``` diff --git a/content/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system.md b/content/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system.md deleted file mode 100644 index e1e500984d..0000000000 --- a/content/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system.md +++ /dev/null @@ -1,175 +0,0 @@ ---- -title: Running CodeQL code scanning in your CI system -shortTitle: Running in your CI -intro: 'You can use the {% data variables.product.prodname_codeql_runner %} to perform {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in a third-party continuous integration system.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - - -{% data reusables.code-scanning.beta-codeql-runner %} -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning %} - -### Using {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} with your existing CI system - -If you use a continuous integration or continuous delivery/deployment (CI/CD) system other than {% data variables.product.prodname_actions %}, you can use your existing system to run {% data variables.product.prodname_dotcom %}'s {% data variables.product.prodname_codeql %} analysis and upload the results to {% data variables.product.prodname_dotcom %}. To do this, use the {% data variables.product.prodname_codeql_runner %}. - -### About the {% data variables.product.prodname_codeql_runner %} - -{% data reusables.code-scanning.about-code-scanning %} For information, see "[About {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/about-code-scanning)." - -You can use the {% data variables.product.prodname_codeql_runner %} to run {% data variables.product.prodname_code_scanning %} on code that you're processing in a third-party continuous integration (CI) system. Alternatively, you can use {% data variables.product.prodname_actions %} to run {% data variables.product.prodname_code_scanning %} on {% data variables.product.product_name %}. For information, see "[Setting up {% data variables.product.prodname_code_scanning %} for a repository](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)." - -The {% data variables.product.prodname_codeql_runner %} is a command-line tool that runs {% data variables.product.prodname_codeql %} analysis on a checkout of a {% data variables.product.prodname_dotcom %} repository. You add the runner to your third-party system, then call the runner to analyze code and upload the results to {% data variables.product.product_name %}. These results are displayed as {% data variables.product.prodname_code_scanning %} alerts in the repository. - -{% note %} - -**Notes:** -{% if currentVersion == "free-pro-team@latest" %} -* The {% data variables.product.prodname_codeql_runner %} uses the {% data variables.product.prodname_codeql %} CLI to analyze code and therefore has the same license conditions. It's free to use on public repositories that are maintained on {% data variables.product.prodname_dotcom_the_website %}, and available to use on private repositories that are owned by customers with an {% data variables.product.prodname_advanced_security %} license. For information, see "[{% data variables.product.product_name %} {% data variables.product.prodname_codeql %} Terms and Conditions](https://securitylab.github.com/tools/codeql/license)" and "[{% data variables.product.prodname_codeql %} CLI](https://codeql.github.com/docs/codeql-cli/)." -{% else %} -* The {% data variables.product.prodname_codeql_runner %} is available to customers with an {% data variables.product.prodname_advanced_security %} license. -{% endif %} -* The {% data variables.product.prodname_codeql_runner %} shouldn't be confused with the {% data variables.product.prodname_codeql %} CLI. The {% data variables.product.prodname_codeql %} CLI is an interactive command-line interface that lets you create {% data variables.product.prodname_codeql %} databases for security research and run {% data variables.product.prodname_codeql %} queries. For more information, see "[{% data variables.product.prodname_codeql %} CLI](https://codeql.github.com/docs/codeql-cli/)." -{% endnote %} - -### Downloading the {% data variables.product.prodname_codeql_runner %} - -You can download the {% data variables.product.prodname_codeql_runner %} from https://{% if currentVersion == "enterprise-server@2.22" or currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/github/codeql-action/releases. On some operating systems, you may need to change permissions for the downloaded file before you can run it. - -On Linux: - -```shell -chmod +x codeql-runner-linux -``` - -On macOS: - -```shell -chmod +x codeql-runner-macos -sudo xattr -d com.apple.quarantine codeql-runner-macos -``` - -On Windows, the `codeql-runner-win.exe` file usually requires no change to permissions. - -### Adding the {% data variables.product.prodname_codeql_runner %} to your CI system - -Once you download the {% data variables.product.prodname_codeql_runner %} and verify that it can be executed, you should make the runner available to each CI server that you intend to use for {% data variables.product.prodname_code_scanning %}. For example, you might configure each server to copy the runner from a central, internal location. Alternatively, you could use the REST API to get the runner directly from {% data variables.product.prodname_dotcom %}, for example: - -```shell -wget https://{% if currentVersion == "enterprise-server@2.22" or currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/github/codeql-action/releases/latest/download/codeql-runner-linux -chmod +x codeql-runner-linux -``` - -In addition to this, each CI server also needs: - -- A {% data variables.product.prodname_github_app %} or personal access token for the {% data variables.product.prodname_codeql_runner %} to use. You must use an access token with the `repo` scope, or a {% data variables.product.prodname_github_app %} with the `security_events` write permission, and `metadata` and `contents` read permissions. For information, see "[Building {% data variables.product.prodname_github_apps %}](/developers/apps/building-github-apps)" and "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." -- Access to the {% data variables.product.prodname_codeql %} bundle associated with this release of the {% data variables.product.prodname_codeql_runner %}. This package contains queries and libraries needed for {% data variables.product.prodname_codeql %} analysis, plus the {% data variables.product.prodname_codeql %} CLI, which is used internally by the runner. For information, see "[{% data variables.product.prodname_codeql %} CLI](https://codeql.github.com/docs/codeql-cli/)." - -The options for providing access to the {% data variables.product.prodname_codeql %} bundle are: - -1. Allow the CI servers access to https://{% if currentVersion == "enterprise-server@2.22" or currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/github/codeql-action so that the {% data variables.product.prodname_codeql_runner %} can download the bundle automatically. -{% if currentVersion == "enterprise-server@2.22" %} -1. Mirror the `github/codeql-action` repository on {% data variables.product.product_name %}. Unless you specify the `--codeql-path` flag, the runner automatically checks for the bundle in this location and on {% data variables.product.prodname_dotcom_the_website %}.{% endif %} -1. Manually download/extract the bundle, store it with other central resources, and use the `--codeql-path` flag to specify the location of the bundle in calls to initialize the {% data variables.product.prodname_codeql_runner %}. - -### Calling the {% data variables.product.prodname_codeql_runner %} - -You should call the {% data variables.product.prodname_codeql_runner %} from the checkout location of the repository you want to analyze. The two main commands are: - -1. `init` required to initialize the runner and create a {% data variables.product.prodname_codeql %} database for each language to be analyzed. These databases are populated and analyzed by subsequent commands. -1. `analyze` required to populate the {% data variables.product.prodname_codeql %} databases, analyze them, and upload results to {% data variables.product.product_name %}. - -For both commands, you must specify the URL of {% data variables.product.product_name %}, the repository *OWNER/NAME*, and the {% data variables.product.prodname_github_apps %} or personal access token to use for authentication. You also need to specify the location of the CodeQL bundle, unless the CI server has access to download it directly from the `github/codeql-action` repository. - -You can configure where the {% data variables.product.prodname_codeql_runner %} stores the CodeQL bundle for future analysis on a server using the `--tools-dir` flag and where it stores temporary files during analysis using `--temp-dir`. - -To view the command-line reference for the runner, use the `-h` flag. For example, to list all commands run: `codeql-runner-OS -h`, or to list all the flags available for the `init` command run: `codeql-runner-OS init -h` (where `OS` varies according to the executable that you are using). For more information, see "[Configuring {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system#codeql-runner-command-reference)." - -{% data reusables.code-scanning.upload-sarif-alert-limit %} - -#### Basic example - -This example runs {% data variables.product.prodname_codeql %} analysis on a Linux CI server for the `octo-org/example-repo` repository hosted on `{% data variables.command_line.git_url_example %}`. The process is very simple because the repository contains only languages that can be analyzed by {% data variables.product.prodname_codeql %} directly, without being built (that is, Go, JavaScript, Python, and TypeScript). - -1. Check out the repository to analyze. -1. Move into the directory where the repository is checked out. -1. Initialize the {% data variables.product.prodname_codeql_runner %} and create {% data variables.product.prodname_codeql %} databases for the languages detected. - - ```shell - $ /path/to-runner/codeql-runner-linux init --repository octo-org/example-repo - --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN - > Cleaning temp directory /srv/checkout/example-repo/codeql-runner - > ... - > Created CodeQL database at /srv/checkout/example-repo/codeql-runner/codeql_databases/javascript. - ``` - -1. Populate the {% data variables.product.prodname_codeql_runner %} databases, analyze them, and upload the results to {% data variables.product.product_name %}. - - ```shell - $ /path/to-runner/codeql-runner-linux analyze --repository octo-org/example-repo - --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN - --commit 5b6a3078b31dc346e5ce7b86837d6abbe7a18bbd --ref refs/heads/main - > Finalizing database creation - > ... - > POST /repos/octo-org/example-repo/code-scanning/sarifs - 202 in 786ms - > Successfully uploaded results - ``` - -The server has access to download the {% data variables.product.prodname_codeql %} bundle directly from the `github/codeql-action` repository, so there is no need to use the `--codeql-path` flag. When the analysis is complete, the {% data variables.product.prodname_codeql_runner %} uploads the results to the {% data variables.product.prodname_code_scanning %} view. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." - -#### Compiled language example - -This example is similar to the previous example, however this time the repository has code in C/C++, C#, or Java. To create a {% data variables.product.prodname_codeql %} database for these languages, the CLI needs to monitor the build. At the end of the initialization process, the runner reports the command you need to set up the environment before building the code. You need to run this command, before calling the normal CI build process, and then running the `analyze` command. - -1. Check out the repository to analyze. -1. Move into the directory where the repository is checked out. -1. Initialize the {% data variables.product.prodname_codeql_runner %} and create {% data variables.product.prodname_codeql %} databases for the languages detected. - - ```shell - $ /path/to-runner/codeql-runner-linux init --repository octo-org/example-repo-2 - --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN - > Cleaning temp directory /srv/checkout/example-repo-2/codeql-runner - > ... - > CodeQL environment output to "/srv/checkout/example-repo-2/codeql-runner/codeql-env.json" - and "/srv/checkout/example-repo-2/codeql-runner/codeql-env.sh". - Please export these variables to future processes so that CodeQL can monitor the build, for example by running " - . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh". - ``` - -1. Source the script generated by the `init` action to set up the environment to monitor the build. Note the leading dot and space in the following code snippet. - - ```shell - $ . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh - ``` - -1. Build the code. On macOS, you need to prefix the build command with the environment variable `$CODEQL_RUNNER`. For more information, see "[Troubleshooting CodeQL code scanning in your CI system](/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system#no-code-found-during-the-build)." - -1. Populate the {% data variables.product.prodname_codeql %} databases, analyze them, and upload the results to {% data variables.product.prodname_dotcom %}. - - ```shell - $ /path/to-runner/codeql-runner-linux analyze --repository octo-org/example-repo-2 - --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN - --commit ae7b655ef30b50fb726ae7b3daa79571a39d194d --ref refs/heads/main - > Finalizing database creation - > ... - > POST /repos/octo-org/example-repo-2/code-scanning/sarifs - 202 in 573ms - > Successfully uploaded results - ``` - -{% note %} - -**Note:** If you use a containerized build, you need to run the {% data variables.product.prodname_codeql_runner %} in the container where your build task takes place. - -{% endnote %} - -### Further reading - -- "[Configuring {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system)" -- "[Troubleshooting {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system)" diff --git a/content/code-security/secure-coding/sarif-support-for-code-scanning.md b/content/code-security/secure-coding/sarif-support-for-code-scanning.md deleted file mode 100644 index 74e4f0d3d6..0000000000 --- a/content/code-security/secure-coding/sarif-support-for-code-scanning.md +++ /dev/null @@ -1,429 +0,0 @@ ---- -title: SARIF support for code scanning -shortTitle: SARIF support -intro: 'To display results from a third-party static analysis tool in your repository on {% data variables.product.prodname_dotcom %}, you''ll need your results stored in a SARIF file that supports a specific subset of the SARIF 2.1.0 JSON schema for {% data variables.product.prodname_code_scanning %}. If you use the default {% data variables.product.prodname_codeql %} static analysis engine, then your results will display in your repository on {% data variables.product.prodname_dotcom %} automatically.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta %} - -### About SARIF support - -SARIF (Static Analysis Results Interchange Format) is an [OASIS Standard](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) that defines an output file format. The SARIF standard is used to streamline how static analysis tools share their results. {% data variables.product.prodname_code_scanning_capc %} supports a subset of the SARIF 2.1.0 JSON schema. - -To upload a SARIF file from a third-party static code analysis engine, you'll need to ensure that uploaded files use the SARIF 2.1.0 version. {% data variables.product.prodname_dotcom %} will parse the SARIF file and show alerts using the results in your repository as a part of the {% data variables.product.prodname_code_scanning %} experience. For more information, see "[Uploading a SARIF file to {% data variables.product.prodname_dotcom %}](/code-security/secure-coding/uploading-a-sarif-file-to-github)." For more information about the SARIF 2.1.0 JSON schema, see [`sarif-schema-2.1.0.json`](https://github.com/oasis-tcs/sarif-spec/blob/master/Schemata/sarif-schema-2.1.0.json). - -If you're using {% data variables.product.prodname_actions %} with the {% data variables.product.prodname_codeql_workflow %} or using the {% data variables.product.prodname_codeql_runner %}, then the {% data variables.product.prodname_code_scanning %} results will automatically use the supported subset of SARIF 2.1.0. For more information, see "[Enabling {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/setting-up-code-scanning-for-a-repository)" or "[Running {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)." - -{% data variables.product.prodname_dotcom %} uses properties in the SARIF file to display alerts. For example, the `shortDescription` and `fullDescription` appear at the top of a {% data variables.product.prodname_code_scanning %} alert. The `location` allows {% data variables.product.prodname_dotcom %} to show annotations in your code file. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." - -If you're new to SARIF and want to learn more, see Microsoft's [`SARIF tutorials`](https://github.com/microsoft/sarif-tutorials) repository. - -### Preventing duplicate alerts using fingerprints - -Each time the results of a new code scan are uploaded, the results are processed and alerts are added to the repository. To prevent duplicate alerts for the same problem, {% data variables.product.prodname_code_scanning %} uses fingerprints to match results across various runs so they only appear once in the latest run for the selected branch. This makes it possible to match alerts to the right line of code when files are edited. - -{% data variables.product.prodname_dotcom %} uses the `partialFingerprints` property in the OASIS standard to detect when two results are logically identical. For more information, see the "[partialFingerprints property](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html#_Toc16012611)" entry in the OASIS documentation. - -SARIF files created by the {% data variables.product.prodname_codeql_workflow %} or using the {% data variables.product.prodname_codeql_runner %} include fingerprint data. If you upload a SARIF file using the `upload-sarif` action and this data is missing, {% data variables.product.prodname_dotcom %} attempts to populate the `partialFingerprints` field from the source files. For more information about uploading results, see "[Uploading a SARIF file to {% data variables.product.prodname_dotcom %}](/code-security/secure-coding/uploading-a-sarif-file-to-github#uploading-a-code-scanning-analysis-with-github-actions)." - -If you upload a SARIF file without fingerprint data using the `/code-scanning/sarifs` API endpoint, the {% data variables.product.prodname_code_scanning %} alerts will be processed and displayed, but users may see duplicate alerts. To avoid seeing duplicate alerts, you should calculate fingerprint data and populate the `partialFingerprints` property before you upload the SARIF file. You may find the script that the `upload-sarif` action uses a helpful starting point: https://github.com/github/codeql-action/blob/main/src/fingerprints.ts. For more information about the API, see "[Upload an analysis as SARIF data](/rest/reference/code-scanning#upload-an-analysis-as-sarif-data)." - -### Validating your SARIF file - - - -You can check a SARIF file is compatible with {% data variables.product.prodname_code_scanning %} by testing it against the {% data variables.product.prodname_dotcom %} ingestion rules. For more information, visit the [Microsoft SARIF validator](https://sarifweb.azurewebsites.net/). - -{% data reusables.code-scanning.upload-sarif-alert-limit %} - -### Supported SARIF output file properties - -If you use a code analysis engine other than {% data variables.product.prodname_codeql %}, you can review the supported SARIF properties to optimize how your analysis results will appear on {% data variables.product.prodname_dotcom %}. - -Any valid SARIF 2.1.0 output file can be uploaded, however, {% data variables.product.prodname_code_scanning %} will only use the following supported properties. - -#### `sarifLog` object - -| Name | Description | -|----|----| -| `$schema` | **Required.** The URI of the SARIF JSON schema for version 2.1.0. For example, `https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json`. | -| `version` | **Required.** {% data variables.product.prodname_code_scanning_capc %} only supports SARIF version `2.1.0`. -| `runs[]` | **Required.** A SARIF file contains an array of one or more runs. Each run represents a single run of an analysis tool. For more information about a `run`, see the [`run` object](#run-object). - -#### `run` object - -{% data variables.product.prodname_code_scanning_capc %} uses the `run` object to filter results by tool and provide information about the source of a result. The `run` object contains the `tool.driver` tool component object, which contains information about the tool that generated the results. Each `run` can only have results for one analysis tool. - -| Name | Description | -|----|----| -| `tool.driver.name` | **Required.** The name of the analysis tool. {% data variables.product.prodname_code_scanning_capc %} displays the name on {% data variables.product.prodname_dotcom %} to allow you to filter results by tool. | -| `tool.driver.version` | **Optional.** The version of the analysis tool. {% data variables.product.prodname_code_scanning_capc %} uses the version number to track when results may have changed due to a tool version change rather than a change in the code being analyzed. If the SARIF file includes the `semanticVersion` field, `version` is not used by {% data variables.product.prodname_code_scanning %}. | -| `tool.driver.semanticVersion` | **Optional.** The version of the analysis tool, specified by the Semantic Versioning 2.0 format. {% data variables.product.prodname_code_scanning_capc %} uses the version number to track when results may have changed due to a tool version change rather than a change in the code being analyzed. If the SARIF file includes the `semanticVersion` field, `version` is not used by {% data variables.product.prodname_code_scanning %}. For more information, see "[Semantic Versioning 2.0.0](https://semver.org/)" in the Semantic Versioning documentation. | -| `tool.driver.rules[]` | **Required.** An array of `reportingDescriptor` objects that represent rules. The analysis tool uses rules to find problems in the code being analyzed. For more information, see the [`reportingDescriptor` object](#reportingdescriptor-object). | -| `results[]` | **Required.** The results of the analysis tool. {% data variables.product.prodname_code_scanning_capc %} displays the results on {% data variables.product.prodname_dotcom %}. For more information, see the [`result` object](#result-object). - -#### `reportingDescriptor` object - -| Name | Description | -|----|----| -| `id` | **Required.** A unique identifier for the rule. The `id` is referenced from other parts of the SARIF file and may be used by {% data variables.product.prodname_code_scanning %} to display URLs on {% data variables.product.prodname_dotcom %}. | -| `name` | **Optional.** The name of the rule. {% data variables.product.prodname_code_scanning_capc %} displays the name to allow results to be filtered by rule on {% data variables.product.prodname_dotcom %}. | -| `shortDescription.text` | **Required.** A concise description of the rule. {% data variables.product.prodname_code_scanning_capc %} displays the short description on {% data variables.product.prodname_dotcom %} next to the associated results. -| `fullDescription.text` | **Required.** A description of the rule. {% data variables.product.prodname_code_scanning_capc %} displays the full description on {% data variables.product.prodname_dotcom %} next to the associated results. The max number of characters is limited to 1000. -| `defaultConfiguration.level` | **Optional.** Default severity level of the rule. {% data variables.product.prodname_code_scanning_capc %} uses severity levels to help you understand how critical the result is for a given rule. This value can be overridden by the `level` attribute in the `result` object. For more information, see the [`result` object](#result-object). Default: `warning`. -| `help.text` | **Required.** Documentation for the rule using text format. {% data variables.product.prodname_code_scanning_capc %} displays this help documentation next to the associated results. -| `help.markdown` | **Recommended.** Documentation for the rule using Markdown format. {% data variables.product.prodname_code_scanning_capc %} displays this help documentation next to the associated results. When `help.markdown` is available, it is displayed instead of `help.text`. -| `properties.tags[]` | **Optional.** An array of strings. {% data variables.product.prodname_code_scanning_capc %} uses `tags` to allow you to filter results on {% data variables.product.prodname_dotcom %}. For example, it is possible to filter to all results that have the tag `security`. -| `properties.precision` | **Recommended.** A string that indicates how often the results indicated by this rule are true. For example, if a rule has a known high false-positive rate, the precision should be `low`. {% data variables.product.prodname_code_scanning_capc %} orders results by precision on {% data variables.product.prodname_dotcom %} so that the results with the highest `level`, and highest `precision` are shown first. Can be one of: `very-high`, `high`, `medium`, or `low`. - -#### `result` object - -{% data reusables.code-scanning.upload-sarif-alert-limit %} - -| Name | Description | -|----|----| -| `ruleId`| **Optional.** The unique identifier of the rule (`reportingDescriptor.id`). For more information, see the [`reportingDescriptor` object](#reportingdescriptor-object). {% data variables.product.prodname_code_scanning_capc %} uses the rule identifier to filter results by rule on {% data variables.product.prodname_dotcom %}. -| `ruleIndex`| **Optional.** The index of the associated rule (`reportingDescriptor` object) in the tool component `rules` array. For more information, see the [`run` object](#run-object). -| `rule`| **Optional.** A reference used to locate the rule (reporting descriptor) for this result. For more information, see the [`reportingDescriptor` object](#reportingdescriptor-object). -| `level`| **Optional.** The severity of the result. This level overrides the default severity defined by the rule. {% data variables.product.prodname_code_scanning_capc %} uses the level to filter results by severity on {% data variables.product.prodname_dotcom %}. -| `message.text`| **Required.** A message that describes the result. {% data variables.product.prodname_code_scanning_capc %} displays the message text as the title of the result. Only the first sentence of the message will be displayed when visible space is limited. -| `locations[]`| **Required.** The set of locations where the result was detected up to a maximum of 10. Only one location should be included unless the problem can only be corrected by making a change at every specified location. **Note:** At least one location is required for {% data variables.product.prodname_code_scanning %} to display a result. {% data variables.product.prodname_code_scanning_capc %} will use this property to decide which file to annotate with the result. Only the first value of this array is used. All other values are ignored. -| `partialFingerprints`| **Required.** A set of strings used to track the unique identity of the result. {% data variables.product.prodname_code_scanning_capc %} uses `partialFingerprints` to accurately identify which results are the same across commits and branches. {% data variables.product.prodname_code_scanning_capc %} will attempt to use `partialFingerprints` if they exist. If you are uploading third-party SARIF files with the `upload-action`, the action will create `partialFingerprints` for you when they are not included in the SARIF file. For more information, see "[Preventing duplicate alerts using fingerprints](#preventing-duplicate-alerts-using-fingerprints)." **Note:** {% data variables.product.prodname_code_scanning_capc %} only uses the `primaryLocationLineHash`. -| `codeFlows[].threadFlows[].locations[]`| **Optional.** An array of `location` objects for a `threadFlow` object, which describes the progress of a program through a thread of execution. A `codeFlow` object describes a pattern of code execution used to detect a result. If code flows are provided, {% data variables.product.prodname_code_scanning %} will expand code flows on {% data variables.product.prodname_dotcom %} for the relevant result. For more information, see the [`location` object](#location-object). -| `relatedLocations[]`| A set of locations relevant to this result. {% data variables.product.prodname_code_scanning_capc %} will link to related locations when they are embedded in the result message. For more information, see the [`location` object](#location-object). - -#### `location` object - -A location within a programming artifact, such as a file in the repository or a file that was generated during a build. - -| Name | Description | -|----|----| -| `location.id` | **Optional.** A unique identifier that distinguishes this location from all other locations within a single result object. -| `location.physicalLocation` | **Required.** Identifies the artifact and region. For more information, see the [`physicalLocation`](#physicallocation-object). -| `location.message.text` | **Optional.** A message relevant to the location. - -#### `physicalLocation` object - -| Name | Description | -|----|----| -| `artifactLocation.uri`| **Required.** A URI indicating the location of an artifact, usually a file either in the repository or generated during a build. If the URI is relative, it should be relative to the root of the {% data variables.product.prodname_dotcom %} repository being analyzed. For example, main.js or src/script.js are relative to the root of the repository. If the URI is absolute, {% data variables.product.prodname_code_scanning %} can use the URI to checkout the artifact and match up files in the repository. For example, `https://github.com/ghost/example/blob/00/src/promiseUtils.js`. -| `region.startLine` | **Required.** The line number of the first character in the region. -| `region.startColumn` | **Required.** The column number of the first character in the region. -| `region.endLine` | **Required.** The line number of the last character in the region. -| `region.endColumn` | **Required.** The column number of the character following the end of the region. - -### SARIF output file examples - -These example SARIF output files show supported properties and example values. - -#### Example with minimum required properties - -This SARIF output file has example values to show the minimum required properties for {% data variables.product.prodname_code_scanning %} results to work as expected. If you remove any properties or don't include values, this data will not be displayed correctly or sync on {% data variables.product.prodname_dotcom %}. - - -```json -{ - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "version": "2.1.0", - "runs": [ - { - "tool": { - "driver": { - "name": "Tool Name", - "rules": [ - { - "id": "R01" - } - ] - } - }, - "results": [ - { - "ruleId": "R01", - "message": { - "text": "Result text. This result does not have a rule associated." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "fileURI" - }, - "region": { - "startLine": 2, - "startColumn": 7, - "endColumn": 10 - } - } - } - ], - "partialFingerprints": { - "primaryLocationLineHash": "39fa2ee980eb94b0:1" - } - } - ] - } - ] -} -``` - -#### Example showing all supported SARIF properties - -This SARIF output file has example values to show all supported SARIF properties for {% data variables.product.prodname_code_scanning %}. - -```json -{ - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "version": "2.1.0", - "runs": [ - { - "tool": { - "driver": { - "name": "Tool Name", - "semanticVersion": "2.0.0", - "rules": [ - { - "id": "3f292041e51d22005ce48f39df3585d44ce1b0ad", - "name": "js/unused-local-variable", - "shortDescription": { - "text": "Unused variable, import, function or class" - }, - "fullDescription": { - "text": "Unused variables, imports, functions or classes may be a symptom of a bug and should be examined carefully." - }, - "defaultConfiguration": { - "level": "note" - }, - "properties": { - "tags": [ - "maintainability" - ], - "precision": "very-high" - } - }, - { - "id": "d5b664aefd5ca4b21b52fdc1d744d7d6ab6886d0", - "name": "js/inconsistent-use-of-new", - "shortDescription": { - "text": "Inconsistent use of 'new'" - }, - "fullDescription": { - "text": "If a function is intended to be a constructor, it should always be invoked with 'new'. Otherwise, it should always be invoked as a normal function, that is, without 'new'." - }, - "properties": { - "tags": [ - "reliability", - "correctness", - "language-features" - ], - "precision": "very-high" - } - }, - { - "id": "R01" - } - ] - } - }, - "results": [ - { - "ruleId": "3f292041e51d22005ce48f39df3585d44ce1b0ad", - "ruleIndex": 0, - "message": { - "text": "Unused variable foo." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "main.js", - "uriBaseId": "%SRCROOT%" - }, - "region": { - "startLine": 2, - "startColumn": 7, - "endColumn": 10 - } - } - } - ], - "partialFingerprints": { - "primaryLocationLineHash": "39fa2ee980eb94b0:1", - "primaryLocationStartColumnFingerprint": "4" - } - }, - { - "ruleId": "d5b664aefd5ca4b21b52fdc1d744d7d6ab6886d0", - "ruleIndex": 1, - "message": { - "text": "Function resolvingPromise is sometimes invoked as a constructor (for example [here](1)), and sometimes as a normal function (for example [here](2))." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/promises.js", - "uriBaseId": "%SRCROOT%" - }, - "region": { - "startLine": 2 - } - } - } - ], - "partialFingerprints": { - "primaryLocationLineHash": "5061c3315a741b7d:1", - "primaryLocationStartColumnFingerprint": "7" - }, - "relatedLocations": [ - { - "id": 1, - "physicalLocation": { - "artifactLocation": { - "uri": "src/ParseObject.js", - "uriBaseId": "%SRCROOT%" - }, - "region": { - "startLine": 2281, - "startColumn": 33, - "endColumn": 55 - } - }, - "message": { - "text": "here" - } - }, - { - "id": 2, - "physicalLocation": { - "artifactLocation": { - "uri": "src/LiveQueryClient.js", - "uriBaseId": "%SRCROOT%" - }, - "region": { - "startLine": 166 - } - }, - "message": { - "text": "here" - } - } - ] - }, - { - "ruleId": "R01", - "message": { - "text": "Specifying both [ruleIndex](1) and [ruleID](2) might lead to inconsistencies." - }, - "level": "error", - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "full.sarif", - "uriBaseId": "%SRCROOT%" - }, - "region": { - "startLine": 54, - "startColumn": 10, - "endLine": 55, - "endColumn": 25 - } - } - } - ], - "relatedLocations": [ - { - "id": 1, - "physicalLocation": { - "artifactLocation": { - "uri": "full.sarif" - }, - "region": { - "startLine": 81, - "startColumn": 10, - "endColumn": 18 - } - }, - "message": { - "text": "here" - } - }, - { - "id": 2, - "physicalLocation": { - "artifactLocation": { - "uri": "full.sarif" - }, - "region": { - "startLine": 82, - "startColumn": 10, - "endColumn": 21 - } - }, - "message": { - "text": "here" - } - } - ], - "codeFlows": [ - { - "threadFlows": [ - { - "locations": [ - { - "location": { - "physicalLocation": { - "region": { - "startLine": 11, - "endLine": 29, - "startColumn": 10, - "endColumn": 18 - }, - "artifactLocation": { - "uriBaseId": "%SRCROOT%", - "uri": "full.sarif" - } - }, - "message": { - "text": "Rule has index 0" - } - } - }, - { - "location": { - "physicalLocation": { - "region": { - "endColumn": 47, - "startColumn": 12, - "startLine": 12 - }, - "artifactLocation": { - "uriBaseId": "%SRCROOT%", - "uri": "full.sarif" - } - } - } - } - ] - } - ] - } - ], - "partialFingerprints": { - "primaryLocationLineHash": "ABC:2" - } - } - ], - "columnKind": "utf16CodeUnits" - } - ] -} -``` diff --git a/content/code-security/secure-coding/setting-up-code-scanning-for-a-repository.md b/content/code-security/secure-coding/setting-up-code-scanning-for-a-repository.md deleted file mode 100644 index 5b5da7a314..0000000000 --- a/content/code-security/secure-coding/setting-up-code-scanning-for-a-repository.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Setting up code scanning for a repository -shortTitle: Setting up code scanning -intro: 'You can set up {% data variables.product.prodname_code_scanning %} by adding a workflow to your repository.' -product: '{% data reusables.gated-features.code-scanning %}' -permissions: 'If you have write permissions to a repository, you can set up or configure {% data variables.product.prodname_code_scanning %} for that repository.' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning-actions %} - -### Options for setting up {% data variables.product.prodname_code_scanning %} - -You decide how to generate {% data variables.product.prodname_code_scanning %} alerts, and which tools to use, at a repository level. {% data variables.product.product_name %} provides fully integrated support for {% data variables.product.prodname_codeql %} analysis, and also supports analysis using third-party tools. For more information, see "[About {% data variables.product.prodname_codeql %}](/code-security/secure-coding/about-code-scanning#about-codeql)." - -{% data reusables.code-scanning.enabling-options %} - -### Setting up {% data variables.product.prodname_code_scanning %} using actions - -{% if currentVersion == "free-pro-team@latest" %}Using actions to run {% data variables.product.prodname_code_scanning %} will use minutes. For more information, see "[About billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions)."{% endif %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -3. To the right of "{% data variables.product.prodname_code_scanning_capc %} alerts", click **Set up {% data variables.product.prodname_code_scanning %}**. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.0" %}If {% data variables.product.prodname_code_scanning %} is missing, you need to ask an organization owner or repository administrator to enable {% data variables.product.prodname_GH_advanced_security %}. For more information, see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)" or "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)."{% endif %} - !["Set up {% data variables.product.prodname_code_scanning %}" button to the right of "{% data variables.product.prodname_code_scanning_capc %}" in the Security Overview](/assets/images/help/security/overview-set-up-code-scanning.png) -4. Under "Get started with {% data variables.product.prodname_code_scanning %}", click **Set up this workflow** on the {% data variables.product.prodname_codeql_workflow %} or on a third-party workflow. - !["Set up this workflow" button under "Get started with {% data variables.product.prodname_code_scanning %}" heading](/assets/images/help/repository/code-scanning-set-up-this-workflow.png) -5. To customize how {% data variables.product.prodname_code_scanning %} scans your code, edit the workflow. - - Generally you can commit the {% data variables.product.prodname_codeql_workflow %} without making any changes to it. However, many of the third-party workflows require additional configuration, so read the comments in the workflow before committing. - - For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)." -6. Use the **Start commit** drop-down, and type a commit message. - ![Start commit](/assets/images/help/repository/start-commit-commit-new-file.png) -7. Choose whether you'd like to commit directly to the default branch, or create a new branch and start a pull request. - ![Choose where to commit](/assets/images/help/repository/start-commit-choose-where-to-commit.png) -8. Click **Commit new file** or **Propose new file**. - -In the default {% data variables.product.prodname_codeql_workflow %}, {% data variables.product.prodname_code_scanning %} is configured to analyze your code each time you either push a change to the default branch or any protected branches, or raise a pull request against the default branch. As a result, {% data variables.product.prodname_code_scanning %} will now commence. - -### Bulk set up of {% data variables.product.prodname_code_scanning %} -You can set up {% data variables.product.prodname_code_scanning %} in many repositories at once using a script. For an example of a script that raises pull requests to add a {% data variables.product.prodname_actions %} workflow to multiple repositories, see the [`jhutchings1/Create-ActionsPRs`](https://github.com/jhutchings1/Create-ActionsPRs) repository. - -### Viewing the logging output from {% data variables.product.prodname_code_scanning %} - -After setting up {% data variables.product.prodname_code_scanning %} for your repository, you can watch the output of the actions as they run. - -{% data reusables.repositories.actions-tab %} - - You'll see a list that includes an entry for running the {% data variables.product.prodname_code_scanning %} workflow. The text of the entry is the title you gave your commit message. - - ![Actions list showing {% data variables.product.prodname_code_scanning %} workflow](/assets/images/help/repository/code-scanning-actions-list.png) - -1. Click the entry for the {% data variables.product.prodname_code_scanning %} workflow. - -1. Click the job name on the left. For example, **Analyze (LANGUAGE)**. - - ![Log output from the {% data variables.product.prodname_code_scanning %} workflow](/assets/images/help/repository/code-scanning-logging-analyze-action.png) - -1. Review the logging output from the actions in this workflow as they run. - -1. Once all jobs are complete, you can view the details of any {% data variables.product.prodname_code_scanning %} alerts that were identified. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." - -{% note %} - -**Note:** If you raised a pull request to add the {% data variables.product.prodname_code_scanning %} workflow to the repository, alerts from that pull request aren't displayed directly on the {% data variables.product.prodname_code_scanning_capc %} page until the pull request is merged. If any alerts were found you can view these, before the pull request is merged, by clicking the **_n_ alerts found** link in the banner on the {% data variables.product.prodname_code_scanning_capc %} page. - - ![Click the "n alerts found" link](/assets/images/help/repository/code-scanning-alerts-found-link.png) - -{% endnote %} - -### Understanding the pull request checks - -Each {% data variables.product.prodname_code_scanning %} workflow you set to run on pull requests always has at least two entries listed in the checks section of a pull request. There is one entry for each of the analysis jobs in the workflow, and a final one for the results of the analysis. - -The names of the {% data variables.product.prodname_code_scanning %} analysis checks take the form: "TOOL NAME / JOB NAME (TRIGGER)." For example, for {% data variables.product.prodname_codeql %}, analysis of C++ code has the entry "{% data variables.product.prodname_codeql %} / Analyze (cpp) (pull_request)." You can click **Details** on a {% data variables.product.prodname_code_scanning %} analysis entry to see logging data. This allows you to debug a problem if the analysis job failed. For example, for {% data variables.product.prodname_code_scanning %} analysis of compiled languages, this can happen if the action can't build the code. - - ![{% data variables.product.prodname_code_scanning %} pull request checks](/assets/images/help/repository/code-scanning-pr-checks.png) - -When the {% data variables.product.prodname_code_scanning %} jobs complete, {% data variables.product.prodname_dotcom %} works out whether any alerts were added by the pull request and adds the "{% data variables.product.prodname_code_scanning_capc %} results / TOOL NAME" entry to the list of checks. After {% data variables.product.prodname_code_scanning %} has been performed at least once, you can click **Details** to view the results of the analysis. If you used a pull request to add {% data variables.product.prodname_code_scanning %} to the repository, you will initially see a "Missing analysis" message when you click **Details** on the "{% data variables.product.prodname_code_scanning_capc %} results / TOOL NAME" check. - - ![Missing analysis for commit message](/assets/images/help/repository/code-scanning-missing-analysis.png) - -#### Reasons for the "missing analysis" message - -After {% data variables.product.prodname_code_scanning %} has analyzed the code in a pull request, it needs to compare the analysis of the topic branch (the branch you used to create the pull request) with the analysis of the base branch (the branch into which you want to merge the pull request). This allows {% data variables.product.prodname_code_scanning %} to compute which alerts are newly introduced by the pull request, which alerts were already present in the base branch, and whether any existing alerts are fixed by the changes in the pull request. Initially, if you use a pull request to add {% data variables.product.prodname_code_scanning %} to a repository, the base branch has not yet been analyzed, so it's not possible to compute these details. In this case, when you click through from the results check on the pull request you will see the "Missing analysis for base commit SHA-HASH" message. - -There are other situations where there may be no analysis for the latest commit to the base branch for a pull request. These include: - -* The pull request has been raised against a branch other than the default branch, and this branch hasn't been analyzed. - - To check whether a branch has been scanned, go to the {% data variables.product.prodname_code_scanning_capc %} page, click the **Branch** drop-down and select the relevant branch. - - ![Choose a branch from the Branch drop-down menu](/assets/images/help/repository/code-scanning-branch-dropdown.png) - - The solution in this situation is to add the name of the base branch to the `on:push` and `on:pull_request` specification in the {% data variables.product.prodname_code_scanning %} workflow on that branch and then make a change that updates the open pull request that you want to scan. - -* The latest commit on the base branch for the pull request is currently being analyzed and analysis is not yet available. - - Wait a few minutes and then push a change to the pull request to retrigger {% data variables.product.prodname_code_scanning %}. - -* An error occurred while analyzing the latest commit on the base branch and analysis for that commit isn't available. - - Merge a trivial change into the base branch to trigger {% data variables.product.prodname_code_scanning %} on this latest commit, then push a change to the pull request to retrigger {% data variables.product.prodname_code_scanning %}. - -### Next steps - -After setting up {% data variables.product.prodname_code_scanning %}, and allowing its actions to complete, you can: - -- View all of the {% data variables.product.prodname_code_scanning %} alerts generated for this repository. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." -- View any alerts generated for a pull request submitted after you set up {% data variables.product.prodname_code_scanning %}. For more information, see "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)." -- Set up notifications for completed runs. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#github-actions-notification-options)." -- Investigate any problems that occur with the initial setup of {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}. For more information, see "[Troubleshooting the {% data variables.product.prodname_codeql %} workflow](/code-security/secure-coding/troubleshooting-the-codeql-workflow)." -- Customize how {% data variables.product.prodname_code_scanning %} scans the code in your repository. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)." diff --git a/content/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests.md b/content/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests.md deleted file mode 100644 index 98c646eef3..0000000000 --- a/content/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Triaging code scanning alerts in pull requests -shortTitle: Triaging alerts in pull requests -intro: 'When {% data variables.product.prodname_code_scanning %} identifies a problem in a pull request, you can review the highlighted code and resolve the alert.' -product: '{% data reusables.gated-features.code-scanning %}' -permissions: 'If you have read permission for a repository, you can see annotations on pull requests. With write permission, you can see detailed information and resolve {% data variables.product.prodname_code_scanning %} alerts for that repository.' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta %} - -### About {% data variables.product.prodname_code_scanning %} results on pull requests - -In repositories where {% data variables.product.prodname_code_scanning %} is configured as a pull request check, {% data variables.product.prodname_code_scanning %} checks the code in the pull request. By default, this is limited to pull requests that target the default branch, but you can change this configuration within {% data variables.product.prodname_actions %} or in a third-party CI/CD system. If merging the changes would introduce new {% data variables.product.prodname_code_scanning %} alerts to the target branch, these are reported as check results in the pull request. The alerts are also shown as annotations in the **Files changed** tab of the pull request. If you have write permission for the repository, you can see any existing {% data variables.product.prodname_code_scanning %} alerts on the **Security** tab. For information about repository alerts, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." - -If {% data variables.product.prodname_code_scanning %} has any results with a severity of `error`, the check fails and the error is reported in the check results. If all the results found by {% data variables.product.prodname_code_scanning %} have lower severities, the alerts are treated as warnings or notices and the check succeeds. If your pull request targets a protected branch that uses {% data variables.product.prodname_code_scanning %}, and the repository owner has configured required status checks, then you must either fix or {% if currentVersion == "enterprise-server@2.22" %}close{% else %}dismiss{% endif %} all error alerts before the pull request can be merged. For more information, see "[About protected branches](/github/administering-a-repository/about-protected-branches#require-status-checks-before-merging)." - -![Failed {% data variables.product.prodname_code_scanning %} check on a pull request](/assets/images/help/repository/code-scanning-check-failure.png) - -### About {% data variables.product.prodname_code_scanning %} as a pull request check - -There are many options for configuring {% data variables.product.prodname_code_scanning %} as a pull request check, so the exact setup of each repository will vary and some will have more than one check. The check that contains the results of {% data variables.product.prodname_code_scanning %} is: **Code scanning results**. - -If the repository uses the {% data variables.product.prodname_codeql_workflow %} a **{% data variables.product.prodname_codeql %} / Analyze (LANGUAGE)** check is run for each language before the results check runs. The analysis check may fail if there are configuration problems, or if the pull request breaks the build for a language that the analysis needs to compile (for example, C/C++, C#, or Java). As with other pull request checks, you can see full details of the check failure on the **Checks** tab. For more information about configuring and troubleshooting, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)" or "[Troubleshooting {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/troubleshooting-the-codeql-workflow)." - -### Triaging an alert on your pull request - -When you look at the **Files changed** tab for a pull request, you see annotations for any lines of code that triggered the alert. - -![Alert annotation within a pull request diff](/assets/images/help/repository/code-scanning-pr-annotation.png) - -If you have write permission for the repository, some annotations contain links with extra context for the alert. In the example above, from {% data variables.product.prodname_codeql %} analysis, you can click **user-provided value** to see where the untrusted data enters the data flow (this is referred to as the source). In this case you can also view the full path from the source to the code that uses the data (the sink) by clicking **Show paths**. This makes it easy to check whether the data is untrusted or if the analysis failed to recognize a data sanitization step between the source and the sink. For information about analyzing data flow using {% data variables.product.prodname_codeql %}, see "[About data flow analysis](https://codeql.github.com/docs/writing-codeql-queries/about-data-flow-analysis/)." - -To see more information about an alert, users with write permission can click the **Show more details** link shown in the annotation. This allows you to see all of the context and metadata provided by the tool in an alert view. In the example below, you can see tags showing the severity, type, and relevant common weakness enumerations (CWEs) for the problem. The view also shows which commit introduced the problem. - -In the detailed view for an alert, some {% data variables.product.prodname_code_scanning %} tools, like {% data variables.product.prodname_codeql %} analysis, also include a description of the problem and a **Show more** link for guidance on how to fix your code. - -![Alert description and link to show more information](/assets/images/help/repository/code-scanning-pr-alert.png) - -### {% if currentVersion == "enterprise-server@2.22" %}Resolving{% else %}Fixing{% endif %} an alert on your pull request - -Anyone with push access to a pull request can fix a {% data variables.product.prodname_code_scanning %} alert that's identified on that pull request. If you commit changes to the pull request this triggers a new run of the pull request checks. If your changes fix the problem, the alert is closed and the annotation removed. - -{% if currentVersion == "enterprise-server@2.22" %} - -If you don't think that an alert needs to be fixed, users with write permission can close the alert manually. {% data reusables.code-scanning.close-alert-examples %} The **Close** button is available in annotations and in the alerts view if you have write permission for the repository. - -{% data reusables.code-scanning.false-positive-fix-codeql %} - -{% else %} - -### Dismissing an alert on your pull request - -An alternative way of closing an alert is to dismiss it. You can dismiss an alert if you don't think it needs to be fixed. {% data reusables.code-scanning.close-alert-examples %} If you have write permission for the repository, the **Dismiss** button is available in code annotations and in the alerts summary. When you click **Dismiss** you will be prompted to choose a reason for closing the alert. - -![Choosing a reason for dismissing an alert](/assets/images/help/repository/code-scanning-alert-close-drop-down.png) - -{% data reusables.code-scanning.choose-alert-dismissal-reason %} - -{% data reusables.code-scanning.false-positive-fix-codeql %} - -For more information about dismissing alerts, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository#dismissing-or-deleting-alerts)." - -{% endif %} diff --git a/content/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system.md b/content/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system.md deleted file mode 100644 index bb65b3ad17..0000000000 --- a/content/code-security/secure-coding/troubleshooting-codeql-code-scanning-in-your-ci-system.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Troubleshooting CodeQL code scanning in your CI system -shortTitle: Troubleshooting in your CI -intro: 'If you''re having problems with the {% data variables.product.prodname_codeql_runner %}, you can troubleshoot by using these tips.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta-codeql-runner %} -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.not-available %} - -### The `init` command takes too long - -Before the {% data variables.product.prodname_codeql_runner %} can build and analyze code, it needs access to the {% data variables.product.prodname_codeql %} bundle, which contains the {% data variables.product.prodname_codeql %} CLI and the {% data variables.product.prodname_codeql %} libraries. - -When you use the {% data variables.product.prodname_codeql_runner %} for the first time on your machine, the `init` command downloads the {% data variables.product.prodname_codeql %} bundle to your machine. This download can take a few minutes. -The {% data variables.product.prodname_codeql %} bundle is cached between runs, so if you use the {% data variables.product.prodname_codeql_runner %} again on the same machine, it won't download the {% data variables.product.prodname_codeql %} bundle again. - -To avoid this automatic download, you can manually download the {% data variables.product.prodname_codeql %} bundle to your machine and specify the path using the `--codeql-path` flag of the `init` command. - -### No code found during the build - -If the `analyze` command for the {% data variables.product.prodname_codeql_runner %} fails with an error `No source code was seen during the build`, this indicates that {% data variables.product.prodname_codeql %} was unable to monitor your code. Several reasons can explain such a failure. - -1. Automatic language detection identified a supported language, but there is no analyzable code of that language in the repository. A typical example is when our language detection service finds a file associated with a particular programming language like a `.h`, or `.gyp` file, but no corresponding executable code is present in the repository. To solve the problem, you can manually define the languages you want to analyze by using the `--languages` flag of the `init` command. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system)." - -1. You're analyzing a compiled language without using the `autobuild` command and you run the build steps yourself after the `init` step. For the build to work, you must set up the environment such that the {% data variables.product.prodname_codeql_runner %} can monitor the code. The `init` command generates instructions for how to export the required environment variables, so you can copy and run the script after you've run the `init` command. - - On macOS and Linux: - ```shell - $ . codeql-runner/codeql-env.sh - ``` - - On Windows, using the Command shell (`cmd`) or a batch file (`.bat`): - ```shell - > call codeql-runner\codeql-env.bat - ``` - - On Windows, using PowerShell: - ```shell - > cat codeql-runner\codeql-env.sh | Invoke-Expression - ``` - - The environment variables are also stored in the file `codeql-runner/codeql-env.json`. This file contains a single JSON object which maps environment variable keys to values. If you can't run the script generated by the `init` command, then you can use the data in JSON format instead. - - {% note %} - - **Note:** If you used the `--temp-dir` flag of the `init` command to specify a custom directory for temporary files, the path to the `codeql-env` files might be different. - - {% endnote %} - -1. You're analyzing a compiled language on macOS without using the `autobuild` command and you run the build steps yourself after the `init` step. If SIP (System Integrity Protection) is enabled, which is the default on recent versions of OSX, analysis might fail. To fix this, prefix the build command with the `$CODEQL_RUNNER` environment variable. - For example, if your build command is `cmd arg1 arg2`, you should run `$CODEQL_RUNNER cmd arg1 arg2`. - -1. The code is built in a container or on a separate machine. If you use a containerized build or if you outsource the build to another machine, make sure to run the {% data variables.product.prodname_codeql_runner %} in the container or on the machine where your build task takes place. For more information, see "[Running CodeQL code scanning in a container](/code-security/secure-coding/running-codeql-code-scanning-in-a-container)." diff --git a/content/code-security/secure-coding/troubleshooting-the-codeql-workflow.md b/content/code-security/secure-coding/troubleshooting-the-codeql-workflow.md deleted file mode 100644 index 5183aab02f..0000000000 --- a/content/code-security/secure-coding/troubleshooting-the-codeql-workflow.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: Troubleshooting the CodeQL workflow -shortTitle: Troubleshooting CodeQL -intro: 'If you''re having problems with {% data variables.product.prodname_code_scanning %}, you can troubleshoot by using these tips for resolving issues.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.not-available %} - -### Automatic build for a compiled language fails - -If an automatic build of code for a compiled language within your project fails, try the following troubleshooting steps. - -- Remove the `autobuild` step from your {% data variables.product.prodname_code_scanning %} workflow and add specific build steps. For information about editing the workflow, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning#editing-a-code-scanning-workflow)." For more information about replacing the `autobuild` step, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." - -- If your workflow doesn't explicitly specify the languages to analyze, {% data variables.product.prodname_codeql %} implicitly detects the supported languages in your code base. In this configuration, out of the compiled languages C/C++, C#, and Java, {% data variables.product.prodname_codeql %} only analyzes the language with the most source files. Edit the workflow and add a build matrix specifying the languages you want to analyze. The default CodeQL analysis workflow uses such a matrix. - - The following extracts from a workflow show how you can use a matrix within the job strategy to specify languages, and then reference each language within the "Initialize {% data variables.product.prodname_codeql %}" step: - - ```yaml - jobs: - analyze: - ... - strategy: - fail-fast: false - matrix: - language: ['csharp', 'cpp', 'javascript'] - - ... - - - name: Initialize {% data variables.product.prodname_codeql %} - uses: github/codeql-action/init@v1 - with: - languages: {% raw %}${{ matrix.language }}{% endraw %} - ``` - - For more information about editing the workflow, see "[Configuring code scanning](/code-security/secure-coding/configuring-code-scanning)." - -### No code found during the build - -If your workflow fails with an error `No source code was seen during the build` or `The process '/opt/hostedtoolcache/CodeQL/0.0.0-20200630/x64/codeql/codeql' failed with exit code 32`, this indicates that {% data variables.product.prodname_codeql %} was unable to monitor your code. Several reasons can explain such a failure: - -1. Automatic language detection identified a supported language, but there is no analyzable code of that language in the repository. A typical example is when our language detection service finds a file associated with a particular programming language like a `.h`, or `.gyp` file, but no corresponding executable code is present in the repository. To solve the problem, you can manually define the languages you want to analyze by updating the list of languages in the `language` matrix. For example, the following configuration will analyze only Go, and JavaScript. - - ```yaml - strategy: - fail-fast: false - matrix: - # Override automatic language detection by changing the list below - # Supported options are: - # ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] - language: ['go', 'javascript'] - ``` -For more information, see the workflow extract in "[Automatic build for a compiled language fails](#automatic-build-for-a-compiled-language-fails)" above. -1. Your {% data variables.product.prodname_code_scanning %} workflow is analyzing a compiled language (C, C++, C#, or Java), but the code was not compiled. By default, the {% data variables.product.prodname_codeql %} analysis workflow contains an `autobuild` step, however, this step represents a best effort process, and may not succeed in building your code, depending on your specific build environment. Compilation may also fail if you have removed the `autobuild` step and did not include build steps manually. For more information about specifying build steps, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." -1. Your workflow is analyzing a compiled language (C, C++, C#, or Java), but portions of your build are cached to improve performance (most likely to occur with build systems like Gradle or Bazel). Since {% data variables.product.prodname_codeql %} observes the activity of the compiler to understand the data flows in a repository, {% data variables.product.prodname_codeql %} requires a complete build to take place in order to perform analysis. -1. Your workflow is analyzing a compiled language (C, C++, C#, or Java), but compilation does not occur between the `init` and `analyze` steps in the workflow. {% data variables.product.prodname_codeql %} requires that your build happens in between these two steps in order to observe the activity of the compiler and perform analysis. -1. Your compiled code (in C, C++, C#, or Java) was compiled successfully, but {% data variables.product.prodname_codeql %} was unable to detect the compiler invocations. The most common causes are: - - * Running your build process in a separate container to {% data variables.product.prodname_codeql %}. For more information, see "[Running CodeQL code scanning in a container](/code-security/secure-coding/running-codeql-code-scanning-in-a-container)." - * Building using a distributed build system external to GitHub Actions, using a daemon process. - * {% data variables.product.prodname_codeql %} isn't aware of the specific compiler you are using. - - For .NET Framework projects, and for C# projects using either `dotnet build` or `msbuild` that target .NET Core 2, you should specify `/p:UseSharedCompilation=false` in your workflow's `run` step, when you build your code. The `UseSharedCompilation` flag isn't necessary for .NET Core 3.0 and later. - - For example, the following configuration for C# will pass the flag during the first build step. - - ``` yaml - - run: | - dotnet build /p:UseSharedCompilation=false - ``` - - If you encounter another problem with your specific compiler or configuration, contact {% data variables.contact.contact_support %}. - -For more information about specifying build steps, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." - -### Portions of my repository were not analyzed using `autobuild` - -The {% data variables.product.prodname_codeql %} `autobuild` feature uses heuristics to build the code in a repository, however, sometimes this approach results in incomplete analysis of a repository. For example, when multiple `build.sh` commands exist in a single repository, the analysis may not complete since the `autobuild` step will only execute one of the commands. The solution is to replace the `autobuild` step with build steps which build all of the source code which you wish to analyze. For more information, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/code-security/secure-coding/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." - -### The build takes too long - -If your build with {% data variables.product.prodname_codeql %} analysis takes too long to run, there are several approaches you can try to reduce the build time. - -#### Increase the memory or cores - -If you use self-hosted runners to run {% data variables.product.prodname_codeql %} analysis, you can increase the memory or the number of cores on those runners. - -#### Use matrix builds to parallelize the analysis - -The default {% data variables.product.prodname_codeql_workflow %} uses a build matrix of languages, which causes the analysis of each language to run in parallel. If you have specified the languages you want to analyze directly in the "Initialize CodeQL" step, analysis of each language will happen sequentially. To speed up analysis of multiple languages, modify your workflow to use a matrix. For more information, see the workflow extract in "[Automatic build for a compiled language fails](#automatic-build-for-a-compiled-language-fails)" above. - -#### Reduce the amount of code being analyzed in a single workflow - -Analysis time is typically proportional to the amount of code being analyzed. You can reduce the analysis time by reducing the amount of code being analyzed at once, for example, by excluding test code, or breaking analysis into multiple workflows that analyze only a subset of your code at a time. - -For compiled languages like Java, C, C++, and C#, {% data variables.product.prodname_codeql %} analyzes all of the code which was built during the workflow run. To limit the amount of code being analyzed, build only the code which you wish to analyze by specifying your own build steps in a `run` block. You can combine specifying your own build steps with using the `paths` or `paths-ignore` filters on the `pull_request` and `push` events to ensure that your workflow only runs when specific code is changed. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths)." - -For interpreted languages like Go, JavaScript, Python, and TypeScript, that {% data variables.product.prodname_codeql %} analyzes without a specific build, you can specify additional configuration options to limit the amount of code to analyze. For more information, see "[Specifying directories to scan](/code-security/secure-coding/configuring-code-scanning#specifying-directories-to-scan)." - -If you split your analysis into multiple workflows as described above, we still recommend that you have at least one workflow which runs on a `schedule` which analyzes all of the code in your repository. Because {% data variables.product.prodname_codeql %} analyzes data flows between components, some complex security behaviors may only be detected on a complete build. - -#### Run only during a `schedule` event - -If your analysis is still too slow to be run during `push` or `pull_request` events, then you may want to only trigger analysis on the `schedule` event. For more information, see "[Events](/actions/learn-github-actions/introduction-to-github-actions#events)." - -{% if currentVersion == "free-pro-team@latest" %} -### Results differ between analysis platforms - -If you are analyzing code written in Python, you may see different results depending on whether you run the {% data variables.product.prodname_codeql_workflow %} on Linux, macOS, or Windows. - -On GitHub-hosted runners that use Linux, the {% data variables.product.prodname_codeql_workflow %} tries to install and analyze Python dependencies, which could lead to more results. To disable the auto-install, add `setup-python-dependencies: false` to the "Initialize CodeQL" step of the workflow. For more information about configuring the analysis of Python dependencies, see "[Analyzing Python dependencies](/code-security/secure-coding/configuring-code-scanning#analyzing-python-dependencies)." - -{% endif %} - -### Error: "Server error" - -If the run of a workflow for {% data variables.product.prodname_code_scanning %} fails due to a server error, try running the workflow again. If the problem persists, contact {% data variables.contact.contact_support %}. - -### Error: "Out of disk" or "Out of memory" - -On very large projects, {% data variables.product.prodname_codeql %} may run out of disk or memory on the runner. -{% if currentVersion == "free-pro-team@latest" %}If you encounter this issue on a hosted {% data variables.product.prodname_actions %} runner, contact {% data variables.contact.contact_support %} so that we can investigate the problem. -{% else %}If you encounter this issue, try increasing the memory on the runner.{% endif %} - -### Warning: "git checkout HEAD^2 is no longer necessary" - -If you're using an old {% data variables.product.prodname_codeql %} workflow you may get the following warning in the output from the "Initialize {% data variables.product.prodname_codeql %}" action: - -``` -Warning: 1 issue was detected with this workflow: git checkout HEAD^2 is no longer -necessary. Please remove this step as Code Scanning recommends analyzing the merge -commit for best results. -``` - -Fix this by removing the following lines from the {% data variables.product.prodname_codeql %} workflow. These lines were included in the `steps` section of the `Analyze` job in initial versions of the {% data variables.product.prodname_codeql %} workflow. - -```yaml - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: {% raw %}${{ github.event_name == 'pull_request' }}{% endraw %} -``` - -The revised `steps` section of the workflow will look like this: - -```yaml - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - # Initializes the {% data variables.product.prodname_codeql %} tools for scanning. - - name: Initialize {% data variables.product.prodname_codeql %} - uses: github/codeql-action/init@v1 - - ... -``` - -For more information about editing the {% data variables.product.prodname_codeql %} workflow file, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning#editing-a-code-scanning-workflow)." \ No newline at end of file diff --git a/content/code-security/secure-coding/uploading-a-sarif-file-to-github.md b/content/code-security/secure-coding/uploading-a-sarif-file-to-github.md deleted file mode 100644 index 0dfdbb65ee..0000000000 --- a/content/code-security/secure-coding/uploading-a-sarif-file-to-github.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Uploading a SARIF file to GitHub -shortTitle: Uploading a SARIF file -intro: '{% data reusables.code-scanning.you-can-upload-third-party-analysis %}' -permissions: 'People with write permissions to a repository can upload {% data variables.product.prodname_code_scanning %} data generated outside {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning %} - -### About SARIF file uploads for {% data variables.product.prodname_code_scanning %} - -{% data variables.product.prodname_dotcom %} creates {% data variables.product.prodname_code_scanning %} alerts in a repository using information from Static Analysis Results Interchange Format (SARIF) files. SARIF files can be uploaded to a repository using the API or {% data variables.product.prodname_actions %}. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/code-security/secure-coding/managing-code-scanning-alerts-for-your-repository)." - -You can generate SARIF files using many static analysis security testing tools, including {% data variables.product.prodname_codeql %}. The results must use SARIF version 2.1.0. For more information, see "[About SARIF support for {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/sarif-support-for-code-scanning)." - -You can upload the results using {% data variables.product.prodname_actions %}{% if currentVersion == "enterprise-server@2.22" %} (available if your organization is taking part in the beta program){% endif %}, the {% data variables.product.prodname_code_scanning %} API, or the {% data variables.product.prodname_codeql_runner %}. The best upload method will depend on how you generate the SARIF file, for example, if you use: - -- {% data variables.product.prodname_actions %} to run the {% data variables.product.prodname_codeql %} action, there is no further action required. The {% data variables.product.prodname_codeql %} action uploads the SARIF file automatically when it completes analysis. -- {% data variables.product.prodname_actions %} to run a SARIF-compatible analysis tool, you could update the workflow to include a final step that uploads the results (see below). -- The {% data variables.product.prodname_codeql_runner %}, to run {% data variables.product.prodname_code_scanning %} in your CI system, by default the runner automatically uploads results to {% data variables.product.prodname_dotcom %} on completion. If you block the automatic upload, when you are ready to upload results you can use the `upload` command (for more information, see "[Running {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)"). -- A tool that generates results as an artifact outside of your repository, you can use the {% data variables.product.prodname_code_scanning %} API to upload the file (for more information, see "[Upload an analysis as SARIF data](/rest/reference/code-scanning#upload-an-analysis-as-sarif-data)"). - -{% data reusables.code-scanning.not-available %} - -### Uploading a {% data variables.product.prodname_code_scanning %} analysis with {% data variables.product.prodname_actions %} - -To use {% data variables.product.prodname_actions %} to upload a third-party SARIF file to a repository, you'll need a workflow. For more information, see "[Learn {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/about-github-actions)" and "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -Your workflow will need to use the `upload-sarif` action, which is part of the `github/codeql-action` repository. It has input parameters that you can use to configure the upload. The main input parameter you'll use is `sarif-file`, which configures the file or directory of SARIF files to be uploaded. The directory or file path is relative to the root of the repository. For more information see the [`upload-sarif` action](https://github.com/github/codeql-action/tree/HEAD/upload-sarif). - -The `upload-sarif` action can be configured to run when the `push` and `scheduled` event occur. For more information about {% data variables.product.prodname_actions %} events, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." - -If your SARIF file doesn't include `partialFingerprints`, the `upload-sarif` action will calculate the `partialFingerprints` field for you and attempt to prevent duplicate alerts. {% data variables.product.prodname_dotcom %} can only create `partialFingerprints` when the repository contains both the SARIF file and the source code used in the static analysis. For more information about preventing duplicate alerts, see "[About SARIF support for code scanning](/code-security/secure-coding/sarif-support-for-code-scanning#preventing-duplicate-alerts-using-fingerprints)." - -{% data reusables.code-scanning.upload-sarif-alert-limit %} - -#### Example workflow for SARIF files generated outside of a repository - -You can create a new workflow that uploads SARIF files after you commit them to your repository. This is useful when the SARIF file is generated as an artifact outside of your repository. - -This example workflow runs anytime commits are pushed to the repository. The action uses the `partialFingerprints` property to determine if changes have occurred. In addition to running when commits are pushed, the workflow is scheduled to run once per week. For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." - -This workflow uploads the `results.sarif` file located in the root of the repository. For more information about creating a workflow file, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -Alternatively, you could modify this workflow to upload a directory of SARIF files. For example, you could place all SARIF files in a directory in the root of your repository called `sarif-output` and set the action's input parameter `sarif_file` to `sarif-output`. - -```yaml -name: "Upload SARIF" - -# Run workflow each time code is pushed to your repository and on a schedule. -# The scheduled workflow runs every at 00:00 on Sunday UTC time. -on: - push: - schedule: - - cron: '0 0 * * 0' - -jobs: - build: - runs-on: ubuntu-latest - steps: - # This step checks out a copy of your repository. - - name: Checkout repository - uses: actions/checkout@v2 - - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v1 - with: - # Path to SARIF file relative to the root of the repository - sarif_file: results.sarif -``` - -#### Example workflow that runs the ESLint analysis tool - -If you generate your third-party SARIF file as part of a continuous integration (CI) workflow, you can add the `upload-sarif` action as a step after running your CI tests. If you don't already have a CI workflow, you can create one using a {% data variables.product.prodname_actions %} template. For more information, see the "[{% data variables.product.prodname_actions %} quickstart](/actions/quickstart)." - -This example workflow runs anytime commits are pushed to the repository. The action uses the `partialFingerprints` property to determine if changes have occurred. In addition to running when commits are pushed, the workflow is scheduled to run once per week. For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." - -The workflow shows an example of running the ESLint static analysis tool as a step in a workflow. The `Run ESLint` step runs the ESLint tool and outputs the `results.sarif` file. The workflow then uploads the `results.sarif` file to {% data variables.product.prodname_dotcom %} using the `upload-sarif` action. For more information about creating a workflow file, see "[Introduction to GitHub Actions](/actions/learn-github-actions/introduction-to-github-actions)." - -```yml -name: "ESLint analysis" - -# Run workflow each time code is pushed to your repository and on a schedule. -# The scheduled workflow runs every at 00:00 on Sunday UTC time. -on: - push: - schedule: - - cron: '0 0 * * 0' - -jobs: - build: - steps: - - uses: actions/checkout@v2 - - name: Run npm install - run: npm install - # Runs the ESlint code analysis - - name: Run ESLint - # eslint exits 1 if it finds anything to report - run: node_modules/.bin/eslint build docs lib script spec-main -f node_modules/@microsoft/eslint-formatter-sarif/sarif.js -o results.sarif || true - # Uploads results.sarif to GitHub repository using the upload-sarif action - - uses: github/codeql-action/upload-sarif@v1 - with: - # Path to SARIF file relative to the root of the repository - sarif_file: results.sarif -``` - -### Further reading - -- "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions)" -- "[Viewing your workflow history](/actions/managing-workflow-runs/viewing-workflow-run-history)" -- "[Running {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/running-codeql-code-scanning-in-your-ci-system)" -- "[Upload an analysis as SARIF data](/rest/reference/code-scanning#upload-an-analysis-as-sarif-data)" diff --git a/content/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system.md b/content/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system.md deleted file mode 100644 index 2779c1d3a4..0000000000 --- a/content/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Using CodeQL code scanning with your existing CI system -shortTitle: CodeQL CI system support -intro: 'The {% data variables.product.prodname_codeql_runner %} allows you to use your existing CI system to run {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}.' -mapTopic: true -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' - github-ae: '*' ---- - diff --git a/content/code-security/security-advisories/index.md b/content/code-security/security-advisories/index.md deleted file mode 100644 index c225614f7b..0000000000 --- a/content/code-security/security-advisories/index.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Managing security advisories for vulnerabilities in your project -shortTitle: Security advisories -intro: 'Discuss, fix, and disclose security vulnerabilities in your repositories using security advisories.' -redirect_from: - - /articles/managing-security-vulnerabilities-in-your-project - - /github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project -versions: - free-pro-team: '*' ---- - -### Table of Contents - -{% link_in_list /adding-a-security-policy-to-your-repository %} -{% link_in_list /about-github-security-advisories %} -{% link_in_list /permission-levels-for-security-advisories %} -{% link_in_list /creating-a-security-advisory %} -{% link_in_list /adding-a-collaborator-to-a-security-advisory %} -{% link_in_list /removing-a-collaborator-from-a-security-advisory %} -{% link_in_list /collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability %} -{% link_in_list /publishing-a-security-advisory %} -{% link_in_list /editing-a-security-advisory %} -{% link_in_list /withdrawing-a-security-advisory %} \ No newline at end of file diff --git a/content/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies.md b/content/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies.md deleted file mode 100644 index 61851a2d19..0000000000 --- a/content/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: About alerts for vulnerable dependencies -intro: '{% data variables.product.product_name %} sends {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} when we detect vulnerabilities affecting your repository.' -redirect_from: - - /github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' ---- - - -### About vulnerable dependencies - -{% data reusables.repositories.a-vulnerability-is %} - -When your code depends on a package that has a security vulnerability, this vulnerable dependency can cause a range of problems for your project or the people who use it. - -### Detection of vulnerable dependencies - - {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %} detects vulnerable dependencies and sends {% data variables.product.prodname_dependabot_alerts %}{% else %}{% data variables.product.product_name %} detects vulnerable dependencies and sends security alerts{% endif %} when: - -{% if currentVersion == "free-pro-team@latest" %} -- A new vulnerability is added to the {% data variables.product.prodname_advisory_database %}. For more information, see "[Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}](/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database)." -- New vulnerability data from [WhiteSource](https://www.whitesourcesoftware.com/vulnerability-database) is processed.{% else %} -- New advisory data is synchronized to {% data variables.product.prodname_ghe_server %} each hour from {% data variables.product.prodname_dotcom_the_website %}. For more information about advisory data, see "
    Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}."{% endif %} -- The dependency graph for a repository changes. For example, when a contributor pushes a commit to change the packages or versions it depends on{% if currentVersion == "free-pro-team@latest" %}, or when the code of one of the dependencies changes{% endif %}. For more information, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." - -{% data reusables.repositories.dependency-review %} - -For a list of the ecosystems that {% data variables.product.product_name %} can detect vulnerabilities and dependencies for, see "[Supported package ecosystems](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)." - -{% note %} - -**Note:** It is important to keep your manifest and lock files up to date. If the dependency graph doesn't accurately reflect your current dependencies and versions, then you could miss alerts for vulnerable dependencies that you use. You may also get alerts for dependencies that you no longer use. - -{% endnote %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" % %} -### {% data variables.product.prodname_dependabot %} alerts for vulnerable dependencies -{% else %} -### Security alerts for vulnerable dependencies -{% endif %} - -{% data reusables.repositories.enable-security-alerts %} - -{% if currentVersion == "free-pro-team@latest" %}{% data variables.product.prodname_dotcom %} detects vulnerable dependencies in _public_ repositories and generates {% data variables.product.prodname_dependabot_alerts %} by default. Owners of private repositories, or people with admin access, can enable {% data variables.product.prodname_dependabot_alerts %} by enabling the dependency graph and {% data variables.product.prodname_dependabot_alerts %} for their repositories. - -You can also enable or disable {% data variables.product.prodname_dependabot_alerts %} for all repositories owned by your user account or organization. For more information, see "[Managing security and analysis settings for your user account](/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account)" or "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)." - -For information about permission requirements for actions related to {% data variables.product.prodname_dependabot_alerts %}, see "[Repository permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-requirements-for-security-features)." - -{% data variables.product.product_name %} starts generating the dependency graph immediately and generates alerts for any vulnerable dependencies as soon as they are identified. The graph is usually populated within minutes but this may take longer for repositories with many dependencies. For more information, see "[Managing data use settings for your private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository)." -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -When {% data variables.product.product_name %} identifies a vulnerable dependency, we generate a {% data variables.product.prodname_dependabot %} alert and display it on the Security tab for the repository. The alert includes a link to the affected file in the project, and information about a fixed version. {% data variables.product.product_name %} also notifies the maintainers of affected repositories about the new alert according to their notification preferences. For more information, see "[Configuring notifications for vulnerable dependencies](/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies)." -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -For repositories where {% data variables.product.prodname_dependabot_security_updates %} are enabled, the alert may also contain a link to a pull request to update the manifest or lock file to the minimum version that resolves the vulnerability. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)." -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -When {% data variables.product.product_name %} identifies a vulnerable dependency, we send a security alert to the maintainers of affected repositories with details of the vulnerability, a link to the affected file in the project, and information about a fixed version. -{% endif %} - -{% warning %} - -**Note**: {% data variables.product.product_name %}'s security features do not claim to catch all vulnerabilities. Though we are always trying to update our vulnerability database and generate alerts with our most up-to-date information, we will not be able to catch everything or tell you about known vulnerabilities within a guaranteed time frame. These features are not substitutes for human review of each dependency for potential vulnerabilities or any other issues, and we recommend consulting with a security service or conducting a thorough vulnerability review when necessary. - -{% endwarning %} - -### Access to {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %}{% else %}security{% endif %} alerts - -You can see all of the alerts that affect a particular project{% if currentVersion == "free-pro-team@latest" %} on the repository's Security tab or{% endif %} in the repository's dependency graph.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)."{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -By default, we notify people with admin permissions in the affected repositories about new {% data variables.product.prodname_dependabot_alerts %}.{% endif %} {% if currentVersion == "free-pro-team@latest" %}{% data variables.product.product_name %} never publicly discloses identified vulnerabilities for any repository. You can also make {% data variables.product.prodname_dependabot_alerts %} visible to additional people or teams working repositories that you own or have admin permissions for. For more information, see "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-security-alerts)." -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -We send security alerts to people with admin permissions in the affected repositories by default. {% data variables.product.product_name %} never publicly discloses identified vulnerabilities for any repository. -{% endif %} - -{% data reusables.notifications.vulnerable-dependency-notification-delivery-method-customization %}{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.21" %} For more information, see "[Choosing the delivery method for your notifications](/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications)."{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} For more information, see "[Configuring notifications for vulnerable dependencies](/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies)."{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -You can also see all the {% data variables.product.prodname_dependabot_alerts %} that correspond to a particular vulnerability in the {% data variables.product.prodname_advisory_database %}. For more information, see "[Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}](/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database#viewing-your-vulnerable-repositories)." -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -### Further reading - -- "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)" -- "[Viewing and updating vulnerable dependencies in your repository](/articles/viewing-and-updating-vulnerable-dependencies-in-your-repository)" -- "[Understanding how {% data variables.product.product_name %} uses and protects your data](/categories/understanding-how-github-uses-and-protects-your-data)"{% endif %} diff --git a/content/code-security/supply-chain-security/about-the-dependency-graph.md b/content/code-security/supply-chain-security/about-the-dependency-graph.md deleted file mode 100644 index 0c8c22fb3f..0000000000 --- a/content/code-security/supply-chain-security/about-the-dependency-graph.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: About the dependency graph -intro: 'You can use the dependency graph to identify all your project''s dependencies. The dependency graph supports a range of popular package ecosystems.' -redirect_from: - - /github/visualizing-repository-data-with-graphs/about-the-dependency-graph -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' ---- - - -### Dependency graph availability - -The dependency graph is available for every{% if currentVersion == "free-pro-team@latest" %} public{% endif %} repository that defines dependencies in a supported package ecosystem using a supported file format.{% if currentVersion == "free-pro-team@latest" %} Repository administrators can also set up the dependency graph for private repositories.{% endif %} - -{% data reusables.repositories.enable-security-alerts %} - -### About the dependency graph - -The dependency graph is a summary of the manifest and lock files stored in a repository. For each repository, it shows{% if currentVersion == "free-pro-team@latest" %}: - -- Dependencies, the ecosystems and packages it depends on -- Dependents, the repositories and packages that depend on it{% else %} dependencies, that is, the ecosystems and packages it depends on. {% data variables.product.prodname_ghe_server %} does not calculate information about dependents, the repositories and packages that depend on a repository.{% endif %} - -When you push a commit to {% data variables.product.product_name %} that changes or adds a supported manifest or lock file to the default branch, the dependency graph is automatically updated.{% if currentVersion == "free-pro-team@latest" %} In addition, the graph is updated when anyone pushes a change to the repository of one of your dependencies.{% endif %} For information on the supported ecosystems and manifest files, see "[Supported package ecosystems](#supported-package-ecosystems)" below. - -{% if currentVersion == "free-pro-team@latest" %} -When you create a pull request containing changes to dependencies that targets the default branch, {% data variables.product.prodname_dotcom %} uses the dependency graph to add dependency reviews to the pull request. These indicate whether the dependencies contain vulnerabilities and, if so, the version of the dependency in which the vulnerability was fixed. For more information, see "[Reviewing dependency changes in a pull request](/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request)." -{% endif %} - -### Dependencies included - -The dependency graph includes all the dependencies of a repository that are detailed in the manifest and lock files, or their equivalent, for supported ecosystems. This includes: - -- Direct dependencies, that are explicitly defined in a manifest or lock file -- Indirect dependencies of these direct dependencies, also known as transitive dependencies or sub-dependencies - -The dependency graph identifies indirect dependencies{% if currentVersion == "free-pro-team@latest" %} either explicitly from a lock file or by checking the dependencies of your direct dependencies. For the most reliable graph, you should use lock files (or their equivalent) because they define exactly which versions of the direct and indirect dependencies you currently use. If you use lock files, you also ensure that all contributors to the repository are using the same versions, which will make it easier for you to test and debug code{% else %} from the lock files{% endif %}. - -{% if currentVersion == "free-pro-team@latest" %} -### Dependents included - -For public repositories, only public repositories that depend on it or on packages that it publishes are reported. This information is not reported for private repositories.{% endif %} - -### Using the dependency graph - -You can use the dependency graph to: - -- Explore the repositories your code depends on{% if currentVersion == "free-pro-team@latest" %}, and those that depend on it{% endif %}. For more information, see "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)." {% if currentVersion == "free-pro-team@latest" %} -- View a summary of the dependencies used in your organization's repositories in a single dashboard. For more information, see "[Viewing insights for your organization](/articles/viewing-insights-for-your-organization#viewing-organization-dependency-insights)."{% endif %} -- View and update vulnerable dependencies for your repository. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)."{% if currentVersion == "free-pro-team@latest" %} -- See information about vulnerable dependencies in pull requests. For more information, see "[Reviewing dependency changes in a pull request](/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request)."{% endif %} - -### Enabling the dependency graph - -{% if currentVersion == "free-pro-team@latest" %}To generate a dependency graph, {% data variables.product.product_name %} needs read-only access to the dependency manifest and lock files for a repository. The dependency graph is automatically generated for all public repositories and you can choose to enable it for private repositories. For information about enabling or disabling it for private repositories, see "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)."{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21" %}If the dependency graph is not available in your system, your site administrator can enable the dependency graph and {% data variables.product.prodname_dependabot_alerts %}. For more information, see "[Enabling alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} If the dependency graph is not available in your system, your site administrator can enable the dependency graph and security alerts. For more information, see "[Enabling alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)." - -{% endif %} - -When the dependency graph is first enabled, any manifest and lock files for supported ecosystems are parsed immediately. The graph is usually populated within minutes but this may take longer for repositories with many dependencies. Once enabled, the graph is automatically updated with every push to the repository{% if currentVersion == "free-pro-team@latest" %} and every push to other repositories in the graph{% endif %}. - -### Supported package ecosystems - -The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% if currentVersion == "free-pro-team@latest" %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for vulnerable dependencies.{% endif %} - -| Package manager | Languages | Recommended formats | All supported formats | -| --- | --- | --- | ---| -| Composer | PHP | `composer.lock` | `composer.json`, `composer.lock` | -| `dotnet` CLI | .NET languages (C#, C++, F#, VB) | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj` | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj`, `packages.config` | -| Maven | Java, Scala | `pom.xml` | `pom.xml` | -| npm | JavaScript | `package-lock.json` | `package-lock.json`, `package.json`| -| Python PIP | Python | `requirements.txt`, `pipfile.lock` | `requirements.txt`, `pipfile`, `pipfile.lock`, `setup.py`* | -| RubyGems | Ruby | `Gemfile.lock` | `Gemfile.lock`, `Gemfile`, `*.gemspec` | -| Yarn | JavaScript | `yarn.lock` | `package.json`, `yarn.lock` | - -{% note %} - -**Note:** If you list your Python dependencies within a `setup.py` file, we may not be able to parse and list every dependency in your project. - -{% endnote %} - -### Further reading - -- "[Dependency graph](https://en.wikipedia.org/wiki/Dependency_graph)" on Wikipedia -- "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)"{% if currentVersion == "free-pro-team@latest" %} -- "[Viewing insights for your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-insights-for-your-organization)" -- "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)" -- "[Troubleshooting the detection of vulnerable dependencies](/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies)"{% endif %} diff --git a/content/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies.md b/content/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies.md deleted file mode 100644 index 2cc0c0b6d6..0000000000 --- a/content/code-security/supply-chain-security/configuring-notifications-for-vulnerable-dependencies.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Configuring notifications for vulnerable dependencies -shortTitle: Configuring notifications -intro: 'Optimize how you receive notifications about {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %}{% else %}security{% endif %} alerts.' -redirect_from: -- /github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' ---- - -### About notifications for vulnerable dependencies - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}When {% data variables.product.prodname_dependabot %} detects vulnerable dependencies in your repositories, we generate a {% data variables.product.prodname_dependabot %} alert and display it on the Security tab for the repository. {% data variables.product.product_name %} notifies the maintainers of affected repositories about the new alert according to their notification preferences.{% else %}When {% data variables.product.product_name %} detects vulnerable dependencies in your repositories, it sends security alerts.{% endif %}{% if currentVersion == "free-pro-team@latest" %} {% data variables.product.prodname_dependabot %} is enabled by default on all public repositories. For {% data variables.product.prodname_dependabot_alerts %}, by default, you will receive {% data variables.product.prodname_dependabot_alerts %} by email, grouped by the specific vulnerability. -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %}If you're an organization owner, you can enable or disable {% data variables.product.prodname_dependabot_alerts %} for all repositories in your organization with one click. You can also set whether the detection of vulnerable dependencies will be enabled or disabled for newly-created repositories. For more information, see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-for-all-new-repositories-when-they-are-added)." -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion == "enterprise-server@2.21" %} -Your site administrator needs to enable security alerts for vulnerable dependencies for {% data variables.product.product_location %} before you can use the feature. For more information, see "[Enabling alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.20" %} -By default, if your site administrator has configured email for notifications on your enterprise, you will receive {% if currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} by email.{% endif %} - -{% if currentVersion ver_gt "enterprise-server@2.21" %}Site administrators can also enable {% data variables.product.prodname_dependabot_alerts %} without notifications. For more information, see "[Enabling {% data variables.product.prodname_dependabot_alerts %} for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} - -{% if currentVersion ver_lt "enterprise-server@2.22" %}Site administrators can also enable security alerts without notifications. For more information, see "[Enabling security alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} - -### Configuring notifications for {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} - -You can configure notification settings for yourself or your organization from the Manage notifications drop-down {% octicon "bell" aria-label="The notifications bell" %} shown at the top of each page. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#choosing-your-notification-settings)." - -{% data reusables.notifications.vulnerable-dependency-notification-delivery-method-customization %} -{% data reusables.notifications.vulnerable-dependency-notification-options %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} - ![{% data variables.product.prodname_dependabot_alerts %} options](/assets/images/help/notifications-v2/dependabot-alerts-options.png) -{% else %} - ![Security alerts options](/assets/images/help/notifications-v2/security-alerts-options.png) -{% endif %} - -{% note %} - -**Note:** You can filter your notifications on {% data variables.product.company_short %} to show {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %}{% else %} security{% endif %} alerts. For more information, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#dependabot-custom-filters)." - -{% endnote %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" % %}{% data reusables.repositories.security-alerts-x-github-severity %} For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#filtering-email-notifications){% else %}"[About email notifications](/github/receiving-notifications-about-activity-on-github/about-email-notifications){% endif %}."{% endif %} - -### How to reduce the noise from notifications for vulnerable dependencies - -If you are concerned about receiving too many notifications for {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %}, we recommend you opt into the weekly email digest, or turn off notifications while keeping {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} enabled. You can still navigate to see your {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} in your repository's Security tab.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)."{% endif %} - -### Further reading - -- "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications)" -- "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#supported-is-queries)" diff --git a/content/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository.md b/content/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository.md deleted file mode 100644 index b920fd241b..0000000000 --- a/content/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: Exploring the dependencies of a repository -intro: 'You can use the dependency graph to see the packages your project depends on{% if currentVersion == "free-pro-team@latest" %} and the repositories that depend on it{% endif %}. In addition, you can see any vulnerabilities detected in its dependencies.' -redirect_from: - - /github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' ---- - -### Viewing the dependency graph - -{% data reusables.repositories.enable-security-alerts %} - -The dependency graph shows the dependencies{% if currentVersion == "free-pro-team@latest" %} and dependents{% endif %} of your repository. For information about the detection of dependencies and which ecosystems are supported, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -{% data reusables.repositories.click-dependency-graph %}{% if currentVersion == "free-pro-team@latest" %} -4. Optionally, under "Dependency graph", click **Dependents**. -![Dependents tab on the dependency graph page](/assets/images/help/graphs/dependency-graph-dependents-tab.png){% endif %} - -#### Dependencies view - -{% if currentVersion == "free-pro-team@latest" %} -Dependencies are grouped by ecosystem. You can expand a dependency to view its dependencies. For dependencies on public repositories hosted on {% data variables.product.product_name %}, you can also click a dependency to view the repository. Dependencies on private repositories, private packages, or unrecognized files are shown in plain text. - -If vulnerabilities have been detected in the repository, these are shown at the top of the view for users with access to {% data variables.product.prodname_dependabot_alerts %}. - -![Dependencies graph](/assets/images/help/graphs/dependencies_graph.png) - -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21" %} -Any direct and indirect dependencies that are specified in the repository's manifest or lock files are listed, grouped by ecosystem. If vulnerabilities have been detected in the repository, these are shown at the top of the view for users with access to {% data variables.product.prodname_dependabot_alerts %}. - -![Dependencies graph](/assets/images/help/graphs/dependencies_graph_server.png) - -{% note %} - -**Note:** {% data variables.product.prodname_ghe_server %} does not populate the **Dependents** view. - -{% endnote %} - -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -Any direct and indirect dependencies that are specified in the repository's manifest or lock files are listed, grouped by ecosystem. If vulnerabilities have been detected in the repository, these are shown at the top of the view for users with access to security alerts. - -![Dependencies graph](/assets/images/help/graphs/dependencies_graph_server.png) - -{% note %} - -**Note:** {% data variables.product.prodname_ghe_server %} does not populate the **Dependents** view. - -{% endnote %} - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -#### Dependents view - -For public repositories, the dependents view shows how the repository is used by other repositories. To show only the repositories that contain a library in a package manager, click **NUMBER Packages** immediately above the list of dependent repositories. The dependent counts are approximate and may not always match the dependents listed. - -![Dependents graph](/assets/images/help/graphs/dependents_graph.png) - -### Enabling and disabling the dependency graph for a private repository - -Repository administrators can enable or disable the dependency graph for private repositories. - -You can also enable or disable the dependency graph for all repositories owned by your user account or organization. For more information, see "[Managing security and analysis settings for your user account](/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account)" or "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-security-and-analysis %} -4. Read the message about granting {% data variables.product.product_name %} read-only access to the repository data to enable the dependency graph, then next to "Dependency Graph", click **Enable**. - !["Enable" button for the dependency graph](/assets/images/help/repository/dependency-graph-enable-button.png) - -You can disable the dependency graph at any time by clicking **Disable** next to "Dependency Graph" on the Security & analysis tab. - -### Changing the "Used by" package - -If the dependency graph is enabled, and your repository contains a package that's published on a supported package ecosystem, {% data variables.product.prodname_dotcom %} displays a "Used by" section in the sidebar of the **Code** tab of your repository. For more information about the supported package ecosystems, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)." - -The "Used by" section shows the number of public references to the package that were found, and displays the avatars of some of the owners of the dependent projects. - -!["Used by" sidebar section](/assets/images/help/repository/used-by-section.png) - -Clicking any item in this section takes you to the **Dependents** tab of the dependency graph. - -The "Used by" section represents a single package from the repository. If you have admin permissions to a repository that contains multiple packages, you can choose which package the "Used by" section represents. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-security-and-analysis %} -4. Under "Configure security and analysis features", click the drop-down menu in the "Used by counter" section and choose a package. - ![Choose a "Used by" package](/assets/images/help/repository/choose-used-by-package.png) - -{% endif %} - -### Troubleshooting the dependency graph - -If your dependency graph is empty, there may be a problem with the file containing your dependencies. Check the file to ensure that it's correctly formatted for the file type. - -{% if currentVersion == "free-pro-team@latest" %} -If the file is correctly formatted, then check its size. The dependency graph ignores individual manifest and lock files that are over 0.5 Mb, unless you are a {% data variables.product.prodname_enterprise %} user. It processes up to 20 manifest or lock files per repository by default, so you can split dependencies into smaller files in subdirectories of the repository.{% endif %} - -If a manifest or lock file is not processed, its dependencies are omitted from the dependency graph and they can't be checked for vulnerable dependencies. - -### Further reading - -- "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)"{% if currentVersion == "free-pro-team@latest" %} -- "[Viewing insights for your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-insights-for-your-organization)" -- "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)" -- "[Understanding how {% data variables.product.product_name %} uses and protects your data](/github/understanding-how-github-uses-and-protects-your-data)" -{% endif %} diff --git a/content/code-security/supply-chain-security/index.md b/content/code-security/supply-chain-security/index.md deleted file mode 100644 index 3a268fa7be..0000000000 --- a/content/code-security/supply-chain-security/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Securing your software supply chain -shortTitle: Supply chain security -intro: 'Visualize, maintain, and secure the dependencies in your software supply chain.' -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' ---- - -### Table of Contents - -{% topic_link_in_list /understanding-your-software-supply-chain %} - {% link_in_list /about-the-dependency-graph %} - {% link_in_list /exploring-the-dependencies-of-a-repository %} -{% topic_link_in_list /keeping-your-dependencies-updated-automatically %} - {% link_in_list /about-dependabot-version-updates %} - {% link_in_list /enabling-and-disabling-version-updates %} - {% link_in_list /listing-dependencies-configured-for-version-updates %} - {% link_in_list /managing-pull-requests-for-dependency-updates %} - {% link_in_list /managing-encrypted-secrets-for-dependabot %} - {% link_in_list /customizing-dependency-updates %} - {% link_in_list /configuration-options-for-dependency-updates %} - {% link_in_list /keeping-your-actions-up-to-date-with-dependabot %} -{% topic_link_in_list /managing-vulnerabilities-in-your-projects-dependencies %} - {% link_in_list /about-managing-vulnerable-dependencies %} - {% link_in_list /browsing-security-vulnerabilities-in-the-github-advisory-database %} - {% link_in_list /about-alerts-for-vulnerable-dependencies %} - {% link_in_list /configuring-notifications-for-vulnerable-dependencies %} - {% link_in_list /about-dependabot-security-updates %} - {% link_in_list /configuring-dependabot-security-updates %} - {% link_in_list /viewing-and-updating-vulnerable-dependencies-in-your-repository %} - {% link_in_list /troubleshooting-the-detection-of-vulnerable-dependencies %} - {% link_in_list /troubleshooting-dependabot-errors %} diff --git a/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies.md b/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies.md deleted file mode 100644 index dea8a0c2b3..0000000000 --- a/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Managing vulnerabilities in your project's dependencies -intro: 'You can track your repository''s dependencies and receive {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} when {% data variables.product.product_name %} detects vulnerable dependencies.' -mapTopic: true -redirect_from: - - /github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies - - /github/managing-security-vulnerabilities -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' ---- - diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain.md deleted file mode 100644 index a9faca223c..0000000000 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Understanding your software supply chain -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' ---- - -### Table of Contents - -{% link_in_list /about-the-dependency-graph %} -{% link_in_list /exploring-the-dependencies-of-a-repository %} \ No newline at end of file diff --git a/content/developers/apps/creating-a-github-app-using-url-parameters.md b/content/developers/apps/creating-a-github-app-using-url-parameters.md index 029bb21d48..99d0f03a93 100644 --- a/content/developers/apps/creating-a-github-app-using-url-parameters.md +++ b/content/developers/apps/creating-a-github-app-using-url-parameters.md @@ -80,7 +80,7 @@ Permission | Description [`starring`](/rest/reference/permissions-required-for-github-apps/#permission-on-starring) | Grants access to the [Starring API](/rest/reference/activity#starring). Can be one of: `none`, `read`, or `write`. [`statuses`](/rest/reference/permissions-required-for-github-apps/#permission-on-statuses) | Grants access to the [Statuses API](/rest/reference/repos#statuses). Can be one of: `none`, `read`, or `write`. [`team_discussions`](/rest/reference/permissions-required-for-github-apps/#permission-on-team-discussions) | Grants access to the [Team Discussions API](/rest/reference/teams#discussions) and the [Team Discussion Comments API](/rest/reference/teams#discussion-comments). Can be one of: `none`, `read`, or `write`.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@1.19" %} -`vulnerability_alerts`| Grants access to receive security alerts for vulnerable dependencies in a repository. See "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies/)" to learn more. Can be one of: `none` or `read`.{% endif %} +`vulnerability_alerts`| Grants access to receive security alerts for vulnerable dependencies in a repository. See "[About security alerts for vulnerable dependencies](/articles/about-security-alerts-for-vulnerable-dependencies)" to learn more. Can be one of: `none` or `read`.{% endif %} `watching` | Grants access to list and change repositories a user is subscribed to. Can be one of: `none`, `read`, or `write`. ### {% data variables.product.prodname_github_app %} webhook events diff --git a/content/developers/webhooks-and-events/webhook-events-and-payloads.md b/content/developers/webhooks-and-events/webhook-events-and-payloads.md index f07976b2e9..2336205b85 100644 --- a/content/developers/webhooks-and-events/webhook-events-and-payloads.md +++ b/content/developers/webhooks-and-events/webhook-events-and-payloads.md @@ -1123,7 +1123,7 @@ Key | Type | Description {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@1.19" %} ### security_advisory -Activity related to a security advisory. A security advisory provides information about security-related vulnerabilities in software on GitHub. The security advisory dataset also powers the GitHub security alerts, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies/)." +Activity related to a security advisory. A security advisory provides information about security-related vulnerabilities in software on GitHub. The security advisory dataset also powers the GitHub security alerts, see "[About security alerts for vulnerable dependencies](/articles/about-security-alerts-for-vulnerable-dependencies/)." {% endif %} #### Availability diff --git a/content/code-security/supply-chain-security/about-dependabot-version-updates.md b/content/github/administering-a-repository/about-dependabot-version-updates.md similarity index 98% rename from content/code-security/supply-chain-security/about-dependabot-version-updates.md rename to content/github/administering-a-repository/about-dependabot-version-updates.md index a8c0dcbc91..70156ab2c9 100644 --- a/content/code-security/supply-chain-security/about-dependabot-version-updates.md +++ b/content/github/administering-a-repository/about-dependabot-version-updates.md @@ -5,7 +5,6 @@ redirect_from: - /github/administering-a-repository/about-dependabot - /github/administering-a-repository/about-github-dependabot - /github/administering-a-repository/about-github-dependabot-version-updates - - /github/administering-a-repository/about-dependabot-version-updates versions: free-pro-team: '*' diff --git a/content/code-security/secret-security/about-secret-scanning.md b/content/github/administering-a-repository/about-secret-scanning.md similarity index 99% rename from content/code-security/secret-security/about-secret-scanning.md rename to content/github/administering-a-repository/about-secret-scanning.md index 5384231795..8835b2c460 100644 --- a/content/code-security/secret-security/about-secret-scanning.md +++ b/content/github/administering-a-repository/about-secret-scanning.md @@ -6,7 +6,6 @@ redirect_from: - /github/administering-a-repository/about-token-scanning - /articles/about-token-scanning - /articles/about-token-scanning-for-private-repositories - - /github/administering-a-repository/about-secret-scanning versions: free-pro-team: '*' enterprise-server: '>=3.0' diff --git a/content/code-security/getting-started/about-securing-your-repository.md b/content/github/administering-a-repository/about-securing-your-repository.md similarity index 98% rename from content/code-security/getting-started/about-securing-your-repository.md rename to content/github/administering-a-repository/about-securing-your-repository.md index 3c992dd73a..e383cbb71e 100644 --- a/content/code-security/getting-started/about-securing-your-repository.md +++ b/content/github/administering-a-repository/about-securing-your-repository.md @@ -1,8 +1,6 @@ --- title: About securing your repository intro: '{% data variables.product.product_name %} provides a number of ways that you can help keep your repository secure.' -redirect_from: - - /github/administering-a-repository/about-securing-your-repository versions: free-pro-team: '*' enterprise-server: '>=3.0' diff --git a/content/code-security/supply-chain-security/configuration-options-for-dependency-updates.md b/content/github/administering-a-repository/configuration-options-for-dependency-updates.md similarity index 99% rename from content/code-security/supply-chain-security/configuration-options-for-dependency-updates.md rename to content/github/administering-a-repository/configuration-options-for-dependency-updates.md index 8b6d123978..a732e3244c 100644 --- a/content/code-security/supply-chain-security/configuration-options-for-dependency-updates.md +++ b/content/github/administering-a-repository/configuration-options-for-dependency-updates.md @@ -2,8 +2,6 @@ title: Configuration options for dependency updates intro: 'Detailed information for all the options you can use to customize how {% data variables.product.prodname_dependabot %} maintains your repositories.' permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_dependabot %} for the repository.' -redirect_from: - - /github/administering-a-repository/configuration-options-for-dependency-updates miniTocMaxHeadingLevel: 4 versions: free-pro-team: '*' diff --git a/content/code-security/secret-security/configuring-secret-scanning-for-your-repositories.md b/content/github/administering-a-repository/configuring-secret-scanning-for-your-repositories.md similarity index 98% rename from content/code-security/secret-security/configuring-secret-scanning-for-your-repositories.md rename to content/github/administering-a-repository/configuring-secret-scanning-for-your-repositories.md index 97e5dede29..27105cdd2f 100644 --- a/content/code-security/secret-security/configuring-secret-scanning-for-your-repositories.md +++ b/content/github/administering-a-repository/configuring-secret-scanning-for-your-repositories.md @@ -4,7 +4,6 @@ intro: 'You can configure how {% data variables.product.prodname_dotcom %} scans permissions: 'People with admin permissions to a repository can enable {% data variables.product.prodname_secret_scanning %} for the repository.' redirect_from: - /github/administering-a-repository/configuring-secret-scanning-for-private-repositories - - /github/administering-a-repository/configuring-secret-scanning-for-your-repositories product: '{% data reusables.gated-features.secret-scanning %}' versions: free-pro-team: '*' diff --git a/content/code-security/supply-chain-security/customizing-dependency-updates.md b/content/github/administering-a-repository/customizing-dependency-updates.md similarity index 98% rename from content/code-security/supply-chain-security/customizing-dependency-updates.md rename to content/github/administering-a-repository/customizing-dependency-updates.md index 076dd573c9..95340f31d2 100644 --- a/content/code-security/supply-chain-security/customizing-dependency-updates.md +++ b/content/github/administering-a-repository/customizing-dependency-updates.md @@ -2,8 +2,6 @@ title: Customizing dependency updates intro: 'You can customize how {% data variables.product.prodname_dependabot %} maintains your dependencies.' permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_dependabot %} for the repository.' -redirect_from: - - /github/administering-a-repository/customizing-dependency-updates versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/enabling-and-disabling-version-updates.md b/content/github/administering-a-repository/enabling-and-disabling-version-updates.md similarity index 97% rename from content/code-security/supply-chain-security/enabling-and-disabling-version-updates.md rename to content/github/administering-a-repository/enabling-and-disabling-version-updates.md index c3e59d8fa0..2b92ea8b18 100644 --- a/content/code-security/supply-chain-security/enabling-and-disabling-version-updates.md +++ b/content/github/administering-a-repository/enabling-and-disabling-version-updates.md @@ -2,12 +2,9 @@ title: Enabling and disabling version updates intro: 'You can configure your repository so that {% data variables.product.prodname_dependabot %} automatically updates the packages you use.' permissions: 'People with write permissions to a repository can enable or disable {% data variables.product.prodname_dependabot_version_updates %} for the repository.' -redirect_from: - - /github/administering-a-repository/enabling-and-disabling-version-updates versions: free-pro-team: '*' --- - {% data reusables.dependabot.beta-note-no-link %} diff --git a/content/github/administering-a-repository/index.md b/content/github/administering-a-repository/index.md index b0ee003aad..1a2e46445c 100644 --- a/content/github/administering-a-repository/index.md +++ b/content/github/administering-a-repository/index.md @@ -25,7 +25,6 @@ versions: {% link_in_list /disabling-or-limiting-github-actions-for-a-repository %}{% if currentVersion == "free-pro-team@latest" %} {% link_in_list /enabling-or-disabling-github-discussions-for-a-repository %}{% endif %} {% link_in_list /managing-git-lfs-objects-in-archives-of-your-repository %} - {% link_in_list /managing-security-and-analysis-settings-for-your-repository %} {% link_in_list /enabling-anonymous-git-read-access-for-a-repository %} {% link_in_list /configuring-autolinks-to-reference-external-resources %} {% link_in_list /renaming-a-repository %} @@ -54,3 +53,18 @@ versions: {% link_in_list /linking-to-releases %} {% link_in_list /comparing-releases %} {% link_in_list /automation-for-release-forms-with-query-parameters %} +{% topic_link_in_list /securing-your-repository %} + {% link_in_list /about-securing-your-repository %} + {% link_in_list /about-secret-scanning %} + {% link_in_list /configuring-secret-scanning-for-your-repositories %} + {% link_in_list /managing-alerts-from-secret-scanning %} + {% link_in_list /managing-security-and-analysis-settings-for-your-repository %} +{% topic_link_in_list /keeping-your-dependencies-updated-automatically %} + {% link_in_list /about-dependabot-version-updates %} + {% link_in_list /enabling-and-disabling-version-updates %} + {% link_in_list /listing-dependencies-configured-for-version-updates %} + {% link_in_list /managing-pull-requests-for-dependency-updates %} + {% link_in_list /managing-encrypted-secrets-for-dependabot %} + {% link_in_list /customizing-dependency-updates %} + {% link_in_list /configuration-options-for-dependency-updates %} + {% link_in_list /keeping-your-actions-up-to-date-with-dependabot %} diff --git a/content/code-security/supply-chain-security/keeping-your-actions-up-to-date-with-dependabot.md b/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot.md similarity index 98% rename from content/code-security/supply-chain-security/keeping-your-actions-up-to-date-with-dependabot.md rename to content/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot.md index 1694bd4322..4e6c7b54b8 100644 --- a/content/code-security/supply-chain-security/keeping-your-actions-up-to-date-with-dependabot.md +++ b/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot.md @@ -3,7 +3,6 @@ title: Keeping your actions up to date with Dependabot intro: 'You can use {% data variables.product.prodname_dependabot %} to keep the actions you use updated to the latest versions.' redirect_from: - /github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot - - /github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically.md b/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md similarity index 69% rename from content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically.md rename to content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md index 873422334c..3c6c79af15 100644 --- a/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically.md +++ b/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md @@ -2,8 +2,6 @@ title: Keeping your dependencies updated automatically intro: '{% data variables.product.prodname_dependabot %} can maintain your repository''s dependencies automatically.' mapTopic: true -redirect_from: - - /github/administering-a-repository/keeping-your-dependencies-updated-automatically versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/listing-dependencies-configured-for-version-updates.md b/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md similarity index 94% rename from content/code-security/supply-chain-security/listing-dependencies-configured-for-version-updates.md rename to content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md index a97b765301..19a0c93aee 100644 --- a/content/code-security/supply-chain-security/listing-dependencies-configured-for-version-updates.md +++ b/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md @@ -1,8 +1,6 @@ --- title: Listing dependencies configured for version updates intro: 'You can view the dependencies that {% data variables.product.prodname_dependabot %} monitors for updates.' -redirect_from: - - /github/administering-a-repository/listing-dependencies-configured-for-version-updates versions: free-pro-team: '*' --- diff --git a/content/code-security/secret-security/managing-alerts-from-secret-scanning.md b/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md similarity index 96% rename from content/code-security/secret-security/managing-alerts-from-secret-scanning.md rename to content/github/administering-a-repository/managing-alerts-from-secret-scanning.md index 18f784c664..d6c7398e98 100644 --- a/content/code-security/secret-security/managing-alerts-from-secret-scanning.md +++ b/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md @@ -2,8 +2,6 @@ title: Managing alerts from secret scanning intro: You can view and close alerts for secrets checked in to your repository. product: '{% data reusables.gated-features.secret-scanning %}' -redirect_from: - - /github/administering-a-repository/managing-alerts-from-secret-scanning versions: free-pro-team: '*' enterprise-server: '>=3.0' diff --git a/content/code-security/supply-chain-security/managing-encrypted-secrets-for-dependabot.md b/content/github/administering-a-repository/managing-encrypted-secrets-for-dependabot.md similarity index 97% rename from content/code-security/supply-chain-security/managing-encrypted-secrets-for-dependabot.md rename to content/github/administering-a-repository/managing-encrypted-secrets-for-dependabot.md index aaa941f169..1362ff7866 100644 --- a/content/code-security/supply-chain-security/managing-encrypted-secrets-for-dependabot.md +++ b/content/github/administering-a-repository/managing-encrypted-secrets-for-dependabot.md @@ -1,8 +1,6 @@ --- title: Managing encrypted secrets for Dependabot intro: You can store sensitive information, like passwords and access tokens, as encrypted secrets and then reference these in the {% data variables.product.prodname_dependabot %} configuration file. -redirect_from: - - /github/administering-a-repository/managing-encrypted-secrets-for-dependabot versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/managing-pull-requests-for-dependency-updates.md b/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md similarity index 97% rename from content/code-security/supply-chain-security/managing-pull-requests-for-dependency-updates.md rename to content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md index 6617b14a79..ebe089535a 100644 --- a/content/code-security/supply-chain-security/managing-pull-requests-for-dependency-updates.md +++ b/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md @@ -1,8 +1,6 @@ --- title: Managing pull requests for dependency updates intro: 'You manage pull requests raised by {% data variables.product.prodname_dependabot %} in much the same way as other pull requests, but there are some extra options.' -redirect_from: - - /github/administering-a-repository/managing-pull-requests-for-dependency-updates versions: free-pro-team: '*' --- diff --git a/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md index d0db699796..2f68164e62 100644 --- a/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md +++ b/content/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md @@ -4,7 +4,6 @@ intro: 'If a pull request contains changes to dependencies, you can view a summa versions: free-pro-team: '*' --- - {% note %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md index f93352b3e7..93644fd985 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md @@ -5,7 +5,9 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/managing-security-vulnerabilities/about-automated-code-scanning versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md index 3020cad90c..0e514fc25e 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md @@ -4,7 +4,9 @@ shortTitle: About integration intro: 'You can perform {% data variables.product.prodname_code_scanning %} externally and then display the results in {% data variables.product.prodname_dotcom %}, or set up webhooks that listen to {% data variables.product.prodname_code_scanning %} activity in your repository.' product: '{% data reusables.gated-features.code-scanning %}' versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md index 6aaa062bda..d8f88cd46b 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md @@ -5,6 +5,8 @@ intro: 'You can find vulnerabilities and errors in your project''s code on {% da mapTopic: true product: '{% data reusables.gated-features.code-scanning %}' versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md index 69833f48d8..c54a30bb93 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md @@ -5,7 +5,9 @@ product: '{% data reusables.gated-features.code-scanning %}' permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_code_scanning %} for the repository.' miniTocMaxHeadingLevel: 4 versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md index 0b9fb49146..b94bfc2fba 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md @@ -7,7 +7,9 @@ miniTocMaxHeadingLevel: 4 redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning-in-your-ci-system versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta-codeql-runner %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md index 95903d8529..3f9ef7ac04 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md @@ -8,7 +8,9 @@ redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning-for-compiled-languages - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-action-for-compiled-languages versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md index 069f4c06d4..cf5bc1721e 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md @@ -5,7 +5,9 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/managing-security-vulnerabilities/finding-security-vulnerabilities-in-your-projects-code versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- ### Table of Contents diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md index 4f1645697a..ee5e4671d5 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md @@ -7,6 +7,8 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-results-from-code-scanning versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md index 86814ff7a1..a72de426b2 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md @@ -5,7 +5,9 @@ intro: 'From the security view, you can view, fix, {% if currentVersion == "ente product: '{% data reusables.gated-features.code-scanning %}' permissions: 'If you have write permission to a repository you can manage {% data variables.product.prodname_code_scanning %} alerts for that repository.' versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' redirect_from: - /github/managing-security-vulnerabilities/managing-alerts-from-automated-code-scanning - /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-alerts-from-code-scanning diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md index b09765a36b..a05a2ca349 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md @@ -4,7 +4,9 @@ shortTitle: '{% data variables.product.prodname_code_scanning_capc %} in a conta intro: 'You can run {% data variables.product.prodname_code_scanning %} in a container by ensuring that all processes run in the same container.' product: '{% data reusables.gated-features.code-scanning %}' versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md index cf9179fe48..b2ff31219a 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md @@ -6,7 +6,9 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/running-code-scanning-in-your-ci-system versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md index 73e51fed22..eb3de38525 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md @@ -6,7 +6,9 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/about-sarif-support-for-code-scanning versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md index 922fb53dfa..e7659aeb09 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository.md @@ -9,7 +9,9 @@ redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning - /github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md index 52cf4fbc39..496acb2802 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md @@ -5,7 +5,9 @@ intro: 'When {% data variables.product.prodname_code_scanning %} identifies a pr product: '{% data reusables.gated-features.code-scanning %}' permissions: 'If you have read permission for a repository, you can see annotations on pull requests. With write permission, you can see detailed information and resolve {% data variables.product.prodname_code_scanning %} alerts for that repository.' versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md index 54452ec7d0..6a37da5f57 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md @@ -6,7 +6,9 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-code-scanning-in-your-ci-system versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta-codeql-runner %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md index f440b44066..5e1f031769 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md @@ -6,7 +6,9 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-code-scanning versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md index fe95be083a..a8908896f7 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md @@ -7,7 +7,9 @@ product: '{% data reusables.gated-features.code-scanning %}' redirect_from: - /github/managing-security-vulnerabilities/uploading-a-code-scanning-analysis-to-github versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- {% data reusables.code-scanning.beta %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md index 32e5adbc43..942e66060b 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md @@ -5,6 +5,8 @@ intro: 'The {% data variables.product.prodname_codeql_runner %} allows you to us mapTopic: true product: '{% data reusables.gated-features.code-scanning %}' versions: - enterprise-server: '2.22' + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' --- diff --git a/content/github/index.md b/content/github/index.md index 4208107f6a..ea86322b6d 100644 --- a/content/github/index.md +++ b/content/github/index.md @@ -51,10 +51,9 @@ versions: {% link_in_list /administering-a-repository %} {% link_in_list /visualizing-repository-data-with-graphs %} - -{% if currentVersion == "enterprise-server@2.22" %} {% link_in_list /managing-security-vulnerabilities %} -{% link_in_list /finding-security-vulnerabilities-and-errors-in-your-code %}{% endif %} + +{% link_in_list /finding-security-vulnerabilities-and-errors-in-your-code %} {% link_in_list /managing-files-in-a-repository %} diff --git a/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md b/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md index fddc4c765a..1fdc443166 100644 --- a/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md +++ b/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md @@ -5,7 +5,8 @@ redirect_from: - /articles/about-security-alerts-for-vulnerable-dependencies - /github/managing-security-vulnerabilities/about-security-alerts-for-vulnerable-dependencies versions: - enterprise-server: '<=2.22' + free-pro-team: '*' + enterprise-server: '*' --- ### About vulnerable dependencies diff --git a/content/code-security/supply-chain-security/about-dependabot-security-updates.md b/content/github/managing-security-vulnerabilities/about-dependabot-security-updates.md similarity index 91% rename from content/code-security/supply-chain-security/about-dependabot-security-updates.md rename to content/github/managing-security-vulnerabilities/about-dependabot-security-updates.md index b5478e8e82..932ce92e86 100644 --- a/content/code-security/supply-chain-security/about-dependabot-security-updates.md +++ b/content/github/managing-security-vulnerabilities/about-dependabot-security-updates.md @@ -4,15 +4,13 @@ intro: '{% data variables.product.prodname_dependabot %} can fix vulnerable depe shortTitle: About Dependabot security updates redirect_from: - /github/managing-security-vulnerabilities/about-github-dependabot-security-updates - - /github/managing-security-vulnerabilities/about-dependabot-security-updates versions: free-pro-team: '*' --- - ### About {% data variables.product.prodname_dependabot_security_updates %} -{% data variables.product.prodname_dependabot_security_updates %} make it easier for you to fix vulnerable dependencies in your repository. If you enable this feature, when a {% data variables.product.prodname_dependabot %} alert is raised for a vulnerable dependency in the dependency graph of your repository, {% data variables.product.prodname_dependabot %} automatically tries to fix it. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)" and "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-dependabot-security-updates)." +{% data variables.product.prodname_dependabot_security_updates %} make it easier for you to fix vulnerable dependencies in your repository. If you enable this feature, when a {% data variables.product.prodname_dependabot %} alert is raised for a vulnerable dependency in the dependency graph of your repository, {% data variables.product.prodname_dependabot %} automatically tries to fix it. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" and "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-dependabot-security-updates)." {% data variables.product.prodname_dependabot %} checks whether it's possible to upgrade the vulnerable dependency to a fixed version without disrupting the dependency graph for the repository. Then {% data variables.product.prodname_dependabot %} raises a pull request to update the dependency to the minimum version that includes the patch and links the pull request to the {% data variables.product.prodname_dependabot %} alert, or reports an error on the alert. For more information, see "[Troubleshooting {% data variables.product.prodname_dependabot %} errors](/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors)." diff --git a/content/code-security/security-advisories/about-github-security-advisories.md b/content/github/managing-security-vulnerabilities/about-github-security-advisories.md similarity index 97% rename from content/code-security/security-advisories/about-github-security-advisories.md rename to content/github/managing-security-vulnerabilities/about-github-security-advisories.md index d9328c974a..f1c2841e3b 100644 --- a/content/code-security/security-advisories/about-github-security-advisories.md +++ b/content/github/managing-security-vulnerabilities/about-github-security-advisories.md @@ -4,7 +4,6 @@ intro: 'You can use {% data variables.product.prodname_security_advisories %} to redirect_from: - /articles/about-maintainer-security-advisories - /github/managing-security-vulnerabilities/about-maintainer-security-advisories - - /github/managing-security-vulnerabilities/about-github-security-advisories versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/about-managing-vulnerable-dependencies.md b/content/github/managing-security-vulnerabilities/about-managing-vulnerable-dependencies.md similarity index 90% rename from content/code-security/supply-chain-security/about-managing-vulnerable-dependencies.md rename to content/github/managing-security-vulnerabilities/about-managing-vulnerable-dependencies.md index 52c69ae572..9041daa8de 100644 --- a/content/code-security/supply-chain-security/about-managing-vulnerable-dependencies.md +++ b/content/github/managing-security-vulnerabilities/about-managing-vulnerable-dependencies.md @@ -1,12 +1,9 @@ --- title: About managing vulnerable dependencies intro: '{% data variables.product.prodname_dotcom %} helps you to avoid using third-party software that contains known vulnerabilities.' -redirect_from: - - /github/managing-security-vulnerabilities/about-managing-vulnerable-dependencies versions: free-pro-team: '*' --- - {% data variables.product.prodname_dotcom %} provides the following tools for removing and avoiding vulnerable dependencies. @@ -18,7 +15,7 @@ For more information, see "[About the dependency graph](/github/visualizing-repo By checking the dependency reviews on pull requests you can avoid introducing vulnerabilities from dependencies into your codebase. If the pull requests adds a vulnerable dependency, or changes a dependency to a vulnerable version, this is highlighted in the dependency review. You can change the dependency to a patched version before merging the pull request. For more information, see "[Reviewing dependency changes in a pull request](/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request)." #### {% data variables.product.prodname_dependabot_alerts %} -{% data variables.product.prodname_dotcom %} can create {% data variables.product.prodname_dependabot_alerts %} when it detects vulnerable dependencies in your repository. The alert is displayed on the Security tab for the repository. The alert includes a link to the affected file in the project, and information about a fixed version. {% data variables.product.prodname_dotcom %} also notifies the maintainers of the repository, according to their notification preferences. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)." +{% data variables.product.prodname_dotcom %} can create {% data variables.product.prodname_dependabot_alerts %} when it detects vulnerable dependencies in your repository. The alert is displayed on the Security tab for the repository. The alert includes a link to the affected file in the project, and information about a fixed version. {% data variables.product.prodname_dotcom %} also notifies the maintainers of the repository, according to their notification preferences. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." #### {% data variables.product.prodname_dependabot_security_updates %} When {% data variables.product.prodname_dotcom %} generates a {% data variables.product.prodname_dependabot %} alert for a vulnerable dependency in your repository, {% data variables.product.prodname_dependabot %} can automatically try to fix it for you. {% data variables.product.prodname_dependabot_security_updates %} are automatically generated pull requests that update a vulnerable dependency to a fixed version. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)." diff --git a/content/code-security/security-advisories/adding-a-collaborator-to-a-security-advisory.md b/content/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory.md similarity index 96% rename from content/code-security/security-advisories/adding-a-collaborator-to-a-security-advisory.md rename to content/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory.md index 8baf65648a..c182035648 100644 --- a/content/code-security/security-advisories/adding-a-collaborator-to-a-security-advisory.md +++ b/content/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory.md @@ -4,7 +4,6 @@ intro: You can add other users or teams to collaborate on a security advisory wi redirect_from: - /articles/adding-a-collaborator-to-a-maintainer-security-advisory - /github/managing-security-vulnerabilities/adding-a-collaborator-to-a-maintainer-security-advisory - - /github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory versions: free-pro-team: '*' --- diff --git a/content/code-security/security-advisories/adding-a-security-policy-to-your-repository.md b/content/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository.md similarity index 96% rename from content/code-security/security-advisories/adding-a-security-policy-to-your-repository.md rename to content/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository.md index 18fb6258fc..874073caaa 100644 --- a/content/code-security/security-advisories/adding-a-security-policy-to-your-repository.md +++ b/content/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository.md @@ -3,7 +3,6 @@ title: Adding a security policy to your repository intro: You can give instructions for how to responsibly report a security vulnerability in your project by adding a security policy to your repository. redirect_from: - /articles/adding-a-security-policy-to-your-repository - - /github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/browsing-security-vulnerabilities-in-the-github-advisory-database.md b/content/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database.md similarity index 93% rename from content/code-security/supply-chain-security/browsing-security-vulnerabilities-in-the-github-advisory-database.md rename to content/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database.md index 1138b031fe..a45c3564bf 100644 --- a/content/code-security/supply-chain-security/browsing-security-vulnerabilities-in-the-github-advisory-database.md +++ b/content/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database.md @@ -2,18 +2,15 @@ title: Browsing security vulnerabilities in the GitHub Advisory Database intro: 'The {% data variables.product.prodname_advisory_database %} allows you to browse or search for vulnerabilities that affect open source projects on {% data variables.product.company_short %}.' shortTitle: Browsing the Advisory Database -redirect_from: - - /github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database versions: free-pro-team: '*' --- - ### About security vulnerabilities {% data reusables.repositories.a-vulnerability-is %} -{% data variables.product.product_name %} will send you {% data variables.product.prodname_dependabot_alerts %} if we detect that any of the vulnerabilities from the {% data variables.product.prodname_advisory_database %} affect the packages that your repository depends on. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)." +{% data variables.product.product_name %} will send you {% data variables.product.prodname_dependabot_alerts %} if we detect that any of the vulnerabilities from the {% data variables.product.prodname_advisory_database %} affect the packages that your repository depends on. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." ### About the {% data variables.product.prodname_advisory_database %} @@ -71,7 +68,7 @@ You can search the database, and use qualifiers to narrow your search. For examp ### Viewing your vulnerable repositories -For any vulnerability in the {% data variables.product.prodname_advisory_database %}, you can see which of your repositories have a {% data variables.product.prodname_dependabot %} alert for that vulnerability. To see a vulnerable repository, you must have access to {% data variables.product.prodname_dependabot_alerts %} for that repository. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies#access-to-dependabot-alerts)." +For any vulnerability in the {% data variables.product.prodname_advisory_database %}, you can see which of your repositories have a {% data variables.product.prodname_dependabot %} alert for that vulnerability. To see a vulnerable repository, you must have access to {% data variables.product.prodname_dependabot_alerts %} for that repository. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies#access-to-dependabot-alerts)." 1. Navigate to https://github.com/advisories. 2. Click an advisory. diff --git a/content/code-security/security-advisories/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md b/content/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md similarity index 97% rename from content/code-security/security-advisories/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md rename to content/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md index fa18318950..fb5e8e5a95 100644 --- a/content/code-security/security-advisories/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md +++ b/content/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md @@ -3,7 +3,6 @@ title: Collaborating in a temporary private fork to resolve a security vulnerabi intro: You can create a temporary private fork to privately collaborate on fixing a security vulnerability in your repository. redirect_from: - /articles/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability - - /github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/configuring-dependabot-security-updates.md b/content/github/managing-security-vulnerabilities/configuring-dependabot-security-updates.md similarity index 95% rename from content/code-security/supply-chain-security/configuring-dependabot-security-updates.md rename to content/github/managing-security-vulnerabilities/configuring-dependabot-security-updates.md index 6175991de2..c1ae6ff87f 100644 --- a/content/code-security/supply-chain-security/configuring-dependabot-security-updates.md +++ b/content/github/managing-security-vulnerabilities/configuring-dependabot-security-updates.md @@ -7,11 +7,9 @@ redirect_from: - /github/managing-security-vulnerabilities/configuring-automated-security-fixes - /github/managing-security-vulnerabilities/configuring-automated-security-updates - /github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates - - /github/managing-security-vulnerabilities/configuring-dependabot-security-updates versions: free-pro-team: '*' --- - ### About configuring {% data variables.product.prodname_dependabot_security_updates %} @@ -60,6 +58,6 @@ You can also enable or disable {% data variables.product.prodname_dependabot_sec ### Further reading -- "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)" +- "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" - "[Managing data use settings for your private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository)" - "[Supported package ecosystems](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)" diff --git a/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md b/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md index 7497da42df..b1097a9342 100644 --- a/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md +++ b/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md @@ -3,7 +3,8 @@ title: Configuring notifications for vulnerable dependencies shortTitle: Configuring notifications intro: 'Optimize how you receive notifications about {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %}{% else %}security{% endif %} alerts.' versions: - enterprise-server: '<=2.22' + free-pro-team: '*' + enterprise-server: '>=2.21' --- ### About notifications for vulnerable dependencies diff --git a/content/code-security/security-advisories/creating-a-security-advisory.md b/content/github/managing-security-vulnerabilities/creating-a-security-advisory.md similarity index 97% rename from content/code-security/security-advisories/creating-a-security-advisory.md rename to content/github/managing-security-vulnerabilities/creating-a-security-advisory.md index 5ded44d6c0..fd713c6afb 100644 --- a/content/code-security/security-advisories/creating-a-security-advisory.md +++ b/content/github/managing-security-vulnerabilities/creating-a-security-advisory.md @@ -4,7 +4,6 @@ intro: You can create a draft security advisory to privately discuss and fix a s redirect_from: - /articles/creating-a-maintainer-security-advisory - /github/managing-security-vulnerabilities/creating-a-maintainer-security-advisory - - /github/managing-security-vulnerabilities/creating-a-security-advisory versions: free-pro-team: '*' --- diff --git a/content/code-security/security-advisories/editing-a-security-advisory.md b/content/github/managing-security-vulnerabilities/editing-a-security-advisory.md similarity index 95% rename from content/code-security/security-advisories/editing-a-security-advisory.md rename to content/github/managing-security-vulnerabilities/editing-a-security-advisory.md index a2ab12e8c7..d2914ae576 100644 --- a/content/code-security/security-advisories/editing-a-security-advisory.md +++ b/content/github/managing-security-vulnerabilities/editing-a-security-advisory.md @@ -1,8 +1,6 @@ --- title: Editing a security advisory intro: You can edit the metadata and description for a security advisory if you need to update details or correct errors. -redirect_from: - - /github/managing-security-vulnerabilities/editing-a-security-advisory versions: free-pro-team: '*' --- diff --git a/content/github/managing-security-vulnerabilities/index.md b/content/github/managing-security-vulnerabilities/index.md index bb3284dab5..9afde0213a 100644 --- a/content/github/managing-security-vulnerabilities/index.md +++ b/content/github/managing-security-vulnerabilities/index.md @@ -3,11 +3,30 @@ title: Managing security vulnerabilities redirect_from: - /categories/managing-security-vulnerabilities versions: - enterprise-server: '<=2.22' + free-pro-team: '*' + enterprise-server: '*' --- ### Table of Contents +{% topic_link_in_list /managing-security-vulnerabilities-in-your-project %} + {% link_in_list /adding-a-security-policy-to-your-repository %} + {% link_in_list /about-github-security-advisories %} + {% link_in_list /permission-levels-for-security-advisories %} + {% link_in_list /creating-a-security-advisory %} + {% link_in_list /adding-a-collaborator-to-a-security-advisory %} + {% link_in_list /removing-a-collaborator-from-a-security-advisory %} + {% link_in_list /collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability %} + {% link_in_list /publishing-a-security-advisory %} + {% link_in_list /editing-a-security-advisory %} + {% link_in_list /withdrawing-a-security-advisory %} {% topic_link_in_list /managing-vulnerabilities-in-your-projects-dependencies %} + {% link_in_list /about-managing-vulnerable-dependencies %} + {% link_in_list /browsing-security-vulnerabilities-in-the-github-advisory-database %} {% link_in_list /about-alerts-for-vulnerable-dependencies %} {% link_in_list /configuring-notifications-for-vulnerable-dependencies %} + {% link_in_list /about-dependabot-security-updates %} + {% link_in_list /configuring-dependabot-security-updates %} + {% link_in_list /viewing-and-updating-vulnerable-dependencies-in-your-repository %} + {% link_in_list /troubleshooting-the-detection-of-vulnerable-dependencies %} + {% link_in_list /troubleshooting-dependabot-errors %} diff --git a/content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md b/content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md new file mode 100644 index 0000000000..e8274c7d6e --- /dev/null +++ b/content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md @@ -0,0 +1,10 @@ +--- +title: Managing security vulnerabilities in your project +intro: 'You can discover, discuss, fix, and disclose security vulnerabilities in your repositories.' +mapTopic: true +redirect_from: + - /articles/managing-security-vulnerabilities-in-your-project +versions: + free-pro-team: '*' +--- + diff --git a/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md b/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md index be5b7bfa34..85d0c898be 100644 --- a/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md +++ b/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md @@ -8,6 +8,7 @@ redirect_from: - /articles/managing-security-vulnerabilities-in-your-projects-dependencies/ - /articles/managing-vulnerabilities-in-your-projects-dependencies versions: - enterprise-server: '<=2.22' + free-pro-team: '*' + enterprise-server: '*' --- diff --git a/content/code-security/security-advisories/permission-levels-for-security-advisories.md b/content/github/managing-security-vulnerabilities/permission-levels-for-security-advisories.md similarity index 97% rename from content/code-security/security-advisories/permission-levels-for-security-advisories.md rename to content/github/managing-security-vulnerabilities/permission-levels-for-security-advisories.md index 76fdc17f32..a69030e7e2 100644 --- a/content/code-security/security-advisories/permission-levels-for-security-advisories.md +++ b/content/github/managing-security-vulnerabilities/permission-levels-for-security-advisories.md @@ -4,7 +4,6 @@ intro: The actions you can take in a security advisory depend on whether you hav redirect_from: - /articles/permission-levels-for-maintainer-security-advisories - /github/managing-security-vulnerabilities/permission-levels-for-maintainer-security-advisories - - /github/managing-security-vulnerabilities/permission-levels-for-security-advisories versions: free-pro-team: '*' --- diff --git a/content/code-security/security-advisories/publishing-a-security-advisory.md b/content/github/managing-security-vulnerabilities/publishing-a-security-advisory.md similarity index 96% rename from content/code-security/security-advisories/publishing-a-security-advisory.md rename to content/github/managing-security-vulnerabilities/publishing-a-security-advisory.md index 919a3c3c0e..cde49eaca0 100644 --- a/content/code-security/security-advisories/publishing-a-security-advisory.md +++ b/content/github/managing-security-vulnerabilities/publishing-a-security-advisory.md @@ -4,11 +4,9 @@ intro: You can publish a security advisory to alert your community about a secur redirect_from: - /articles/publishing-a-maintainer-security-advisory - /github/managing-security-vulnerabilities/publishing-a-maintainer-security-advisory - - /github/managing-security-vulnerabilities/publishing-a-security-advisory versions: free-pro-team: '*' --- - Anyone with admin permissions to a security advisory can publish the security advisory. diff --git a/content/code-security/security-advisories/removing-a-collaborator-from-a-security-advisory.md b/content/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory.md similarity index 93% rename from content/code-security/security-advisories/removing-a-collaborator-from-a-security-advisory.md rename to content/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory.md index 3fcef6e126..ff06ba0cb0 100644 --- a/content/code-security/security-advisories/removing-a-collaborator-from-a-security-advisory.md +++ b/content/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory.md @@ -1,8 +1,6 @@ --- title: Removing a collaborator from a security advisory intro: 'When you remove a collaborator from a security advisory, they lose read and write access to the security advisory''s discussion and metadata.' -redirect_from: - - /github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/troubleshooting-dependabot-errors.md b/content/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors.md similarity index 99% rename from content/code-security/supply-chain-security/troubleshooting-dependabot-errors.md rename to content/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors.md index 206c83cb4a..0867da11f0 100644 --- a/content/code-security/supply-chain-security/troubleshooting-dependabot-errors.md +++ b/content/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors.md @@ -4,7 +4,6 @@ intro: 'Sometimes {% data variables.product.prodname_dependabot %} is unable to shortTitle: Troubleshooting errors redirect_from: - /github/managing-security-vulnerabilities/troubleshooting-github-dependabot-errors - - /github/managing-security-vulnerabilities/troubleshooting-dependabot-errors versions: free-pro-team: '*' --- diff --git a/content/code-security/supply-chain-security/troubleshooting-the-detection-of-vulnerable-dependencies.md b/content/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies.md similarity index 97% rename from content/code-security/supply-chain-security/troubleshooting-the-detection-of-vulnerable-dependencies.md rename to content/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies.md index abf40eba97..ce6fe1bc8e 100644 --- a/content/code-security/supply-chain-security/troubleshooting-the-detection-of-vulnerable-dependencies.md +++ b/content/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies.md @@ -2,8 +2,6 @@ title: Troubleshooting the detection of vulnerable dependencies intro: 'If the dependency information reported by {% data variables.product.product_name %} is not what you expected, there are a number of points to consider, and various things you can check.' shortTitle: Troubleshooting detection -redirect_from: - - /github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies versions: free-pro-team: '*' --- @@ -16,7 +14,7 @@ The results of dependency detection reported by {% data variables.product.produc * {% data variables.product.prodname_advisory_database %} is one of the data sources that {% data variables.product.prodname_dotcom %} uses to identify vulnerable dependencies. It's a free, curated database of vulnerability information for common package ecosystems on {% data variables.product.prodname_dotcom %}. It includes both data reported directly to {% data variables.product.prodname_dotcom %} from {% data variables.product.prodname_security_advisories %}, as well as official feeds and community sources. This data is reviewed and curated by {% data variables.product.prodname_dotcom %} to ensure that false or unactionable information is not shared with the development community. For more information, see "[Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}](/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database)" and "[About {% data variables.product.prodname_security_advisories %}](/github/managing-security-vulnerabilities/about-github-security-advisories)." * The dependency graph parses all known package manifest files in a user’s repository. For example, for npm it will parse the _package-lock.json_ file. It constructs a graph of all of the repository’s dependencies and public dependents. This happens when you enable the dependency graph and when anyone pushes to the default branch, and it includes commits that makes changes to a supported manifest format. For more information, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." -* {% data variables.product.prodname_dependabot %} scans any push, to the default branch, that contains a manifest file. When a new vulnerability record is added, it scans all existing repositories and generates an alert for each vulnerable repository. {% data variables.product.prodname_dependabot_alerts %} are aggregated at the repository level, rather than creating one alert per vulnerability. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)." +* {% data variables.product.prodname_dependabot %} scans any push, to the default branch, that contains a manifest file. When a new vulnerability record is added, it scans all existing repositories and generates an alert for each vulnerable repository. {% data variables.product.prodname_dependabot_alerts %} are aggregated at the repository level, rather than creating one alert per vulnerability. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." * {% data variables.product.prodname_dependabot_security_updates %} are triggered when you receive an alert about a vulnerable dependency in your repository. Where possible, {% data variables.product.prodname_dependabot %} creates a pull request in your repository to upgrade the vulnerable dependency to the minimum possible secure version needed to avoid the vulnerability. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)" and "[Troubleshooting {% data variables.product.prodname_dependabot %} errors](/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors)." {% data variables.product.prodname_dependabot %} doesn't scan repositories for vulnerable dependencies on a schedule, but rather when something changes. For example, a scan is triggered when a new dependency is added ({% data variables.product.prodname_dotcom %} checks for this on every push), or when a new vulnerability is discovered and added to the advisory database. @@ -97,7 +95,7 @@ When you click to display the alert details, you can see how many vulnerabilitie ### Further reading -- "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)" +- "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" - "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)" - "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)" - "[Troubleshooting {% data variables.product.prodname_dependabot %} errors](/github/managing-security-vulnerabilities/troubleshooting-dependabot-errors)" diff --git a/content/code-security/supply-chain-security/viewing-and-updating-vulnerable-dependencies-in-your-repository.md b/content/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository.md similarity index 92% rename from content/code-security/supply-chain-security/viewing-and-updating-vulnerable-dependencies-in-your-repository.md rename to content/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository.md index f0b1d522c2..532fddecb5 100644 --- a/content/code-security/supply-chain-security/viewing-and-updating-vulnerable-dependencies-in-your-repository.md +++ b/content/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository.md @@ -3,13 +3,12 @@ title: Viewing and updating vulnerable dependencies in your repository intro: 'If {% data variables.product.product_name %} discovers vulnerable dependencies in your project, you can view them on the Dependabot alerts tab of your repository. Then, you can update your project to resolve or dismiss the vulnerability.' redirect_from: - /articles/viewing-and-updating-vulnerable-dependencies-in-your-repository - - /github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository permissions: Repository administrators and organization owners can view and update dependencies. shortTitle: Viewing and updating vulnerable dependencies versions: free-pro-team: '*' --- -Your repository's {% data variables.product.prodname_dependabot %} alerts tab lists all open and closed {% data variables.product.prodname_dependabot_alerts %} and corresponding {% data variables.product.prodname_dependabot_security_updates %}. You can sort the list of alerts using the drop-down menu, and you can click into specific alerts for more details. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)." +Your repository's {% data variables.product.prodname_dependabot %} alerts tab lists all open and closed {% data variables.product.prodname_dependabot_alerts %} and corresponding {% data variables.product.prodname_dependabot_security_updates %}. You can sort the list of alerts using the drop-down menu, and you can click into specific alerts for more details. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." You can enable automatic security updates for any repository that uses {% data variables.product.prodname_dependabot_alerts %} and the dependency graph. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)." @@ -35,7 +34,7 @@ You can enable automatic security updates for any repository that uses {% data v ### Further reading -- "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)" +- "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" - "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-dependabot-security-updates)" - "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)" - "[Troubleshooting the detection of vulnerable dependencies](/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies)" diff --git a/content/code-security/security-advisories/withdrawing-a-security-advisory.md b/content/github/managing-security-vulnerabilities/withdrawing-a-security-advisory.md similarity index 81% rename from content/code-security/security-advisories/withdrawing-a-security-advisory.md rename to content/github/managing-security-vulnerabilities/withdrawing-a-security-advisory.md index 7c01ecb95a..90e0dd0d99 100644 --- a/content/code-security/security-advisories/withdrawing-a-security-advisory.md +++ b/content/github/managing-security-vulnerabilities/withdrawing-a-security-advisory.md @@ -1,8 +1,6 @@ --- title: Withdrawing a security advisory intro: You can withdraw a security advisory that you've published. -redirect_from: - - /github/managing-security-vulnerabilities/withdrawing-a-security-advisory versions: free-pro-team: '*' --- diff --git a/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md index 48c8ef00d9..cdc27e3eaf 100644 --- a/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md @@ -142,7 +142,7 @@ In this section, you can find the repository permission levels required for secu | [Designate additional people or teams to receive {% data variables.product.prodname_dependabot_alerts %}](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-security-alerts) for vulnerable dependencies | | | | | **X** | | Create [security advisories](/github/managing-security-vulnerabilities/about-github-security-advisories) | | | | | **X** |{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" or currentVersion == "github-ae@latest" %} | Manage access to {% data variables.product.prodname_GH_advanced_security %} features (see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)") | | | | | **X** |{% endif %}{% if currentVersion == "free-pro-team@latest" %} -| [Enable the dependency graph](/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository) for a private repository | | | | | **X** | +| [Enable the dependency graph](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-and-dependents-of-a-repository) for a private repository | | | | | **X** | | [View dependency reviews](/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request) | **X** | **X** | **X** | **X** | **X** |{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" or currentVersion == "github-ae@latest" %} | [View {% data variables.product.prodname_code_scanning %} alerts on pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests) | **X** | **X** | **X** | **X** | **X** | | [List, dismiss, and delete {% data variables.product.prodname_code_scanning %} alerts](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository) | | | **X** | **X** | **X** |{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.0" or currentVersion == 'github-ae@next' %} diff --git a/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md b/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md index 40b0be0fbe..c366f251c9 100644 --- a/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md +++ b/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md @@ -2,7 +2,8 @@ title: About the dependency graph intro: 'Detailed information about the dependency graph, the ecosystems it supports, and how it determines which packages a repository depends on.' versions: - enterprise-server: '<=2.22' + free-pro-team: '*' + enterprise-server: '*' --- ### Dependency graph availability @@ -44,7 +45,7 @@ You can use the dependency graph to: - Explore the repositories your code depends on{% if currentVersion == "free-pro-team@latest" %}, and those that depend on it{% endif %}. For more information, see "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)." {% if currentVersion == "free-pro-team@latest" %} - View a summary of the dependencies used in your organization's repositories in a single dashboard. For more information, see "[Viewing insights for your organization](/articles/viewing-insights-for-your-organization#viewing-organization-dependency-insights)."{% endif %} -- View and update vulnerable dependencies for your repository. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)."{% if currentVersion == "free-pro-team@latest" %} +- View and update vulnerable dependencies for your repository. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)."{% if currentVersion == "free-pro-team@latest" %} - See information about vulnerable dependencies in pull requests. For more information, see "[Reviewing dependency changes in a pull request](/github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request)."{% endif %} ### Enabling the dependency graph diff --git a/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md b/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md index fd475b3f6e..c78fdbcd3f 100644 --- a/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md +++ b/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md @@ -8,7 +8,8 @@ redirect_from: - /github/visualizing-repository-data-with-graphs/listing-the-projects-that-depend-on-a-repository - /github/visualizing-repository-data-with-graphs/exploring-the-dependencies-and-dependents-of-a-repository versions: - enterprise-server: '<=2.22' + free-pro-team: '*' + enterprise-server: '*' --- ### Viewing the dependency graph diff --git a/content/github/visualizing-repository-data-with-graphs/index.md b/content/github/visualizing-repository-data-with-graphs/index.md index e79dce1312..bbe4472b6b 100644 --- a/content/github/visualizing-repository-data-with-graphs/index.md +++ b/content/github/visualizing-repository-data-with-graphs/index.md @@ -25,6 +25,5 @@ versions: {% topic_link_in_list /understanding-connections-between-repositories %} {% link_in_list /viewing-a-repositorys-network %} {% link_in_list /listing-the-forks-of-a-repository %} - {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %}{% link_in_list /viewing-the-dependencies-of-a-repository %}{% endif %} - {% if currentVersion ver_lt "enterprise-server@3.0" %}{% link_in_list /about-the-dependency-graph %} - {% link_in_list /exploring-the-dependencies-of-a-repository %}{% endif %} + {% link_in_list /about-the-dependency-graph %} + {% link_in_list /exploring-the-dependencies-of-a-repository %} diff --git a/content/github/visualizing-repository-data-with-graphs/viewing-the-dependencies-of-a-repository.md b/content/github/visualizing-repository-data-with-graphs/viewing-the-dependencies-of-a-repository.md deleted file mode 100644 index 6fa6663351..0000000000 --- a/content/github/visualizing-repository-data-with-graphs/viewing-the-dependencies-of-a-repository.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Viewing the dependencies of a repository -intro: 'You can use the dependency graph to explore the code your repository depends on.' -versions: - free-pro-team: '*' - enterprise-server: '>=3.0' ---- - -Almost all software relies on code developed and maintained by other developers, often known as a supply chain. For example, utilities, libraries, and frameworks. These dependencies are an integral part of your code and any bugs or vulnerabilities in them may affect your code. It's important to review and maintain these dependencies. - -The dependency graph provides a great way to visualize and explore the dependencies for a repository. For more information, see "[About the dependency graph](/code-security/supply-chain-security/about-the-dependency-graph)" and "[Exploring the dependencies of a repository](/code-security/supply-chain-security/exploring-the-dependencies-of-a-repository)." - -You can also set up your repository so that {% data variables.product.company_short %} alerts you automatically whenever a security vulnerability is found in one of your dependencies. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." diff --git a/data/products.yml b/data/products.yml index b598d00c18..e49c18cf2d 100644 --- a/data/products.yml +++ b/data/products.yml @@ -5,7 +5,6 @@ productsInOrder: - github - admin - discussions - - code-security - actions - packages - developers diff --git a/data/reusables/code-scanning/enabling-options.md b/data/reusables/code-scanning/enabling-options.md index 90f32e196f..a56da29214 100644 --- a/data/reusables/code-scanning/enabling-options.md +++ b/data/reusables/code-scanning/enabling-options.md @@ -1,4 +1,4 @@ | Type of analysis | Options for generating alerts | |------------------|-------------------------------| -| {% data variables.product.prodname_codeql %} | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or using the {% data variables.product.prodname_codeql_runner %} in a third-party continuous integration (CI) system (see "[Running code scanning in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system)"). +| {% data variables.product.prodname_codeql %} | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or using the {% data variables.product.prodname_codeql_runner %} in a third-party continuous integration (CI) system (see "[Running code scanning in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-code-scanning-in-your-ci-system)"). | Third‑party | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or generated externally and uploaded to {% data variables.product.product_name %} (see "[Uploading a SARIF file to {% data variables.product.prodname_dotcom %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github)").| diff --git a/data/reusables/webhooks/repository_vulnerability_alert_short_desc.md b/data/reusables/webhooks/repository_vulnerability_alert_short_desc.md index bf2b01e473..00324e3dc1 100644 --- a/data/reusables/webhooks/repository_vulnerability_alert_short_desc.md +++ b/data/reusables/webhooks/repository_vulnerability_alert_short_desc.md @@ -1 +1 @@ -Activity related to security vulnerability alerts in a repository. {% data reusables.webhooks.action_type_desc %} For more information, see the "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies/)". +Activity related to security vulnerability alerts in a repository. {% data reusables.webhooks.action_type_desc %} For more information, see the "[About security alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-security-alerts-for-vulnerable-dependencies)". diff --git a/tests/fixtures/article-with-broken-links-and-images.md b/tests/fixtures/article-with-broken-links-and-images.md index abf65dbb78..96bfbb9553 100644 --- a/tests/fixtures/article-with-broken-links-and-images.md +++ b/tests/fixtures/article-with-broken-links-and-images.md @@ -20,7 +20,7 @@ This anchor is broken on all versions because it points to a heading that does n This link is broken on Enterprise versions because it points to a Dotcom-only article: [GitHub's Products](/github/getting-started-with-github/githubs-products) -This link is OK because it points to a Dotcom-only article with the `dotcom-only` class: About alerts for vulnerable dependencies." +This link is OK because it points to a Dotcom-only article with the `dotcom-only` class: About security alerts for vulnerable dependencies." This link is broken on Dotcom because it points to an Enterprise-only article: [Working with Pre-Receive Hooks](/github/collaborating-with-issues-and-pull-requests/working-with-pre-receive-hooks) From 1bc1e848c0d80462c0f623920ebe07c7879d1c36 Mon Sep 17 00:00:00 2001 From: Shati Patel <42641846+shati-patel@users.noreply.github.com> Date: Wed, 17 Mar 2021 09:28:32 +0000 Subject: [PATCH 25/37] Code scanning: uploading results as PR checks (#18050) --- ...-codeql-code-scanning-in-your-ci-system.md | 14 ++++++-- ...-codeql-code-scanning-in-your-ci-system.md | 32 ++++--------------- .../codeql-runner-analyze-example.md | 25 +++++++++++++++ 3 files changed, 42 insertions(+), 29 deletions(-) create mode 100644 data/reusables/code-scanning/codeql-runner-analyze-example.md diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md index b94bfc2fba..59a0a4ee6e 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md @@ -35,12 +35,18 @@ To customize the way the {% data variables.product.prodname_codeql_runner %} sca Scanning code whenever a pull request is created prevents developers from introducing new vulnerabilities and errors into the code. -To scan a pull request, run the `analyze` command and use the `--ref` flag to specify the pull request. The reference is `refs/pull//head` or `refs/pull//merge`, depending on whether you have checked out the HEAD commit of the pull request branch or a merge commit with the base branch. +To scan a pull request, run the `analyze` command and use the `--ref` flag to specify the pull request. The reference is `refs/pull//head` or `refs/pull//merge`, depending on whether you have checked out the HEAD commit of the pull request branch or a merge commit with the base branch. ```shell -$ /path/to-runner/codeql-runner-linux analyze --ref refs/pull/42/head +$ /path/to-runner/codeql-runner-linux analyze --ref refs/pull/42/merge ``` +{% note %} + +**Note**: If you analyze code with a third-party tool and want the results to appear as pull request checks, you must run the `upload` command and use the `--ref` flag to specify the pull request instead of the branch. The reference is `refs/pull//head` or `refs/pull//merge`. + +{% endnote %} + ### Overriding automatic language detection The {% data variables.product.prodname_codeql_runner %} automatically detects and scans code written in the supported languages. @@ -110,7 +116,9 @@ If the `autobuild` command can't build your code, you can run the build steps yo By default, the {% data variables.product.prodname_codeql_runner %} uploads results from {% data variables.product.prodname_code_scanning %} when you run the `analyze` command. You can also upload SARIF files separately, by using the `upload` command. -Once you've uploaded the data, {% data variables.product.prodname_dotcom %} displays the alerts in your repository. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." +Once you've uploaded the data, {% data variables.product.prodname_dotcom %} displays the alerts in your repository. +- If you uploaded to a pull request, for example `--ref refs/pull/42/merge` or `--ref refs/pull/42/head`, then the results appear as alerts in a pull request check. For more information, see "[Triaging code scanning alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests)." +- If you uploaded to a branch, for example `--ref refs/heads/my-branch`, then the results appear in the **Security** tab for your repository. For more information, see "[Managing code scanning alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository)." ### {% data variables.product.prodname_codeql_runner %} command reference diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md index b2ff31219a..79d735ffec 100644 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md +++ b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md @@ -98,6 +98,8 @@ To view the command-line reference for the runner, use the `-h` flag. For exampl This example runs {% data variables.product.prodname_codeql %} analysis on a Linux CI server for the `octo-org/example-repo` repository hosted on `{% data variables.command_line.git_url_example %}`. The process is very simple because the repository contains only languages that can be analyzed by {% data variables.product.prodname_codeql %} directly, without being built (that is, Go, JavaScript, Python, and TypeScript). +In this example, the server has access to download the {% data variables.product.prodname_codeql %} bundle directly from the `github/codeql-action` repository, so there is no need to use the `--codeql-path` flag. + 1. Check out the repository to analyze. 1. Move into the directory where the repository is checked out. 1. Initialize the {% data variables.product.prodname_codeql_runner %} and create {% data variables.product.prodname_codeql %} databases for the languages detected. @@ -110,19 +112,7 @@ This example runs {% data variables.product.prodname_codeql %} analysis on a Lin > Created CodeQL database at /srv/checkout/example-repo/codeql-runner/codeql_databases/javascript. ``` -1. Populate the {% data variables.product.prodname_codeql_runner %} databases, analyze them, and upload the results to {% data variables.product.product_name %}. - - ```shell - $ /path/to-runner/codeql-runner-linux analyze --repository octo-org/example-repo - --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN - --commit 5b6a3078b31dc346e5ce7b86837d6abbe7a18bbd --ref refs/heads/main - > Finalizing database creation - > ... - > POST /repos/octo-org/example-repo/code-scanning/sarifs - 202 in 786ms - > Successfully uploaded results - ``` - -The server has access to download the {% data variables.product.prodname_codeql %} bundle directly from the `github/codeql-action` repository, so there is no need to use the `--codeql-path` flag. When the analysis is complete, the {% data variables.product.prodname_codeql_runner %} uploads the results to the {% data variables.product.prodname_code_scanning %} view. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository)." +{% data reusables.code-scanning.codeql-runner-analyze-example %} #### Compiled language example @@ -139,8 +129,8 @@ This example is similar to the previous example, however this time the repositor > ... > CodeQL environment output to "/srv/checkout/example-repo-2/codeql-runner/codeql-env.json" and "/srv/checkout/example-repo-2/codeql-runner/codeql-env.sh". - Please export these variables to future processes so that CodeQL can monitor the build, for example by running " - . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh". + Please export these variables to future processes so that CodeQL can monitor the build, for example by running + ". /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh". ``` 1. Source the script generated by the `init` action to set up the environment to monitor the build. Note the leading dot and space in the following code snippet. @@ -151,17 +141,7 @@ This example is similar to the previous example, however this time the repositor 1. Build the code. On macOS, you need to prefix the build command with the environment variable `$CODEQL_RUNNER`. For more information, see "[Troubleshooting CodeQL code scanning in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system#no-code-found-during-the-build)." -1. Populate the {% data variables.product.prodname_codeql %} databases, analyze them, and upload the results to {% data variables.product.prodname_dotcom %}. - - ```shell - $ /path/to-runner/codeql-runner-linux analyze --repository octo-org/example-repo-2 - --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN - --commit ae7b655ef30b50fb726ae7b3daa79571a39d194d --ref refs/heads/main - > Finalizing database creation - > ... - > POST /repos/octo-org/example-repo-2/code-scanning/sarifs - 202 in 573ms - > Successfully uploaded results - ``` +{% data reusables.code-scanning.codeql-runner-analyze-example %} {% note %} diff --git a/data/reusables/code-scanning/codeql-runner-analyze-example.md b/data/reusables/code-scanning/codeql-runner-analyze-example.md new file mode 100644 index 0000000000..01e6a97f91 --- /dev/null +++ b/data/reusables/code-scanning/codeql-runner-analyze-example.md @@ -0,0 +1,25 @@ +1. Populate the {% data variables.product.prodname_codeql %} databases, analyze them, and upload the results to {% data variables.product.product_name %}. The results will appear in the **Security** tab for your repository. + + ```shell + $ /path/to-runner/codeql-runner-linux analyze --repository octo-org/example-repo + --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN + --commit 5b6a3078b31dc346e5ce7b86837d6abbe7a18bbd --ref refs/heads/my-branch + > Finalizing database creation + > ... + > POST /repos/octo-org/example-repo/code-scanning/sarifs - 202 in 786ms + > Successfully uploaded results + ``` + +1. To upload {% data variables.product.prodname_code_scanning %} results as pull request checks, specify the pull request using the `--ref` flag. We recommend setting up the {% data variables.product.prodname_codeql_runner %} so that it runs on the [`pull_request`](/developers/webhooks-and-events/webhook-events-and-payloads#pull_request) webhook event. + + ```shell + $ /path/to-runner/codeql-runner-linux analyze --repository octo-org/example-repo + --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN + --commit 1dc7a1346e5ce7b86835b68bbda3078b37d6abbe --ref refs/pull/123/merge + > Finalizing database creation + > ... + > POST /repos/octo-org/example-repo/code-scanning/sarifs - 202 in 786ms + > Successfully uploaded results + ``` + +For more information about viewing {% data variables.product.prodname_code_scanning %} alerts, see "[Triaging code scanning alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests)" and "[Managing code scanning alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository)." From fb5dec647987148aae5d98f90f128af4713fb76e Mon Sep 17 00:00:00 2001 From: Felicity Chapman Date: Wed, 17 Mar 2021 11:49:32 +0000 Subject: [PATCH 26/37] Clarify the availability of GHAS licenses for dotcom (#18246) --- assets/images/help/billing/ghas-seats-org.png | Bin 31179 -> 0 bytes ...and-analysis-settings-for-your-repository.md | 2 +- .../setting-repository-visibility.md | 2 +- .../about-github-advanced-security.md | 7 ++++--- .../githubs-products.md | 3 ++- ...ut-licensing-for-github-advanced-security.md | 11 +++++------ ...ng-licensing-for-github-advanced-security.md | 1 + ...ewing-your-github-advanced-security-usage.md | 16 ++-------------- ...d-analysis-settings-for-your-organization.md | 2 +- .../note-org-enable-uses-seats.md | 2 +- data/reusables/gated-features/ghas.md | 1 + 11 files changed, 19 insertions(+), 28 deletions(-) delete mode 100644 assets/images/help/billing/ghas-seats-org.png create mode 100644 data/reusables/gated-features/ghas.md diff --git a/assets/images/help/billing/ghas-seats-org.png b/assets/images/help/billing/ghas-seats-org.png deleted file mode 100644 index 14b78d9e4f9c32de42db0a207a21cdc920f4770e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31179 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