diff --git a/CHANGELOG.md b/CHANGELOG.md index 60b2e5214b9d..67d797bfec26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Docs changelog +**30 June 2025** + +Many enterprise customers want to measure the downstream impact of Copilot on their company, looking beyond leading metrics like adoption and usage. + +Inspired by [GitHub's latest guidance](https://resources.github.com/engineering-system-success-playbook/), we've published three guides that provide usecases, training resources, and metrics to help you plan and measure your rollout to achieve real-world goals, such as increasing test coverage. + +Get started at [Achieving your company's engineering goals with GitHub Copilot](https://docs.github.com/en/copilot/get-started/achieve-engineering-goals). + +
+ +**27 June 2025** + +We've published a new guide about how to combine use of GitHub Copilot's agent mode with Model Context Protocol (MCP) servers to complete complex tasks through agentic "loops" - illustrated through an accessibility compliance example. The guide also discusses best practices and benefits around using these two features together. See [Enhancing Copilot agent mode with MCP](https://docs.github.com/copilot/tutorials/enhancing-copilot-agent-mode-with-mcp). + +
+ **27 June 2025** We’ve published a new set of new documentation articles designed to help users make the most of the **Dependabot metrics page** in the organization’s security overview. diff --git a/content/actions/how-tos/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow.md b/content/actions/how-tos/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow.md index 3f2031f90b2b..b21b91b199dd 100644 --- a/content/actions/how-tos/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow.md +++ b/content/actions/how-tos/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow.md @@ -10,6 +10,7 @@ redirect_from: - /actions/managing-workflow-runs/manually-running-a-workflow - /actions/using-workflows/manually-running-a-workflow - /actions/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow + - /articles/configuring-a-workflow --- {% data reusables.actions.enterprise-github-hosted-runners %} diff --git a/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md b/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md index 9100878aeae3..10ab9632cbf2 100644 --- a/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md +++ b/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md @@ -38,8 +38,6 @@ With {% data variables.product.prodname_emus %}, you can control the user accoun * Can purchase and install paid {% data variables.product.prodname_github_apps %} only if the {% data variables.enterprise.prodname_managed_user %} is an enterprise owner. * Can create {% data variables.product.prodname_github_apps %} and {% data variables.product.prodname_oauth_apps %}. - {% data reusables.emus.oauth-app-note %} - ## {% data variables.product.prodname_github_codespaces %} * On {% data variables.product.prodname_dotcom_the_website %}, {% data variables.enterprise.prodname_managed_users %} can only create codespaces that are owned by the enterprise. This means that {% data variables.enterprise.prodname_managed_users %}: diff --git a/content/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps.md b/content/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps.md index 63338c46c77e..ba6b57a827d3 100644 --- a/content/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps.md +++ b/content/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps.md @@ -49,9 +49,9 @@ Once you have written the code for your {% data variables.product.prodname_githu To use your {% data variables.product.prodname_github_app %}, you need to install it on your organization or personal account. -* If your {% data variables.product.prodname_github_app %} is **private**, you can only install it on the account that owns the app. -* If your {% data variables.product.prodname_github_app %} is **public**, other users and organizations can also install it.{% ifversion enterprise-apps-public-beta %} -* If your {% data variables.product.prodname_github_app %} is owned by an **enterprise**, you can install it on any organization within that enterprise.{% endif %} +* If your {% data variables.product.prodname_github_app %} is **private**, you can only install it on the account that owns the app. {% ifversion restrictive-app-authz %}If it's owned by an organization, only members of the organization can sign in to it. If it's owned by your user account, only you can sign in to it.{% endif %} +* If your {% data variables.product.prodname_github_app %} is **public**, other users and organizations can also install it. Anyone can sign in to it.{% ifversion enterprise-apps-public-beta %} +* If your {% data variables.product.prodname_github_app %} is owned by an **enterprise**, you can install it on any organization within that enterprise.{% ifversion restrictive-app-authz %} Only members of the enterprise can sign in to it.{% endif %}{% endif %} For more information, see [AUTOTITLE](/apps/using-github-apps/installing-your-own-github-app) and [AUTOTITLE](/apps/sharing-github-apps/sharing-your-github-app). diff --git a/content/apps/creating-github-apps/registering-a-github-app/making-a-github-app-public-or-private.md b/content/apps/creating-github-apps/registering-a-github-app/making-a-github-app-public-or-private.md index 085176ab7e02..6e5318781d14 100644 --- a/content/apps/creating-github-apps/registering-a-github-app/making-a-github-app-public-or-private.md +++ b/content/apps/creating-github-apps/registering-a-github-app/making-a-github-app-public-or-private.md @@ -22,9 +22,9 @@ shortTitle: Visibility ## About visibility for {% data variables.product.prodname_github_apps %} -A {% data variables.product.prodname_github_app %} can be {% ifversion fpt %}public or private{% elsif enterprise-apps-public-beta %}public, private, or internal{% endif %}.{% ifversion fpt or ghec %} If you set your {% data variables.product.prodname_github_app %} registration to public, any user on {% data variables.product.github %} can install it. If you set your {% data variables.product.prodname_github_app %} registration to private, it can only be installed on the account that owns the app. +A {% data variables.product.prodname_github_app %} can be {% ifversion fpt %}public or private{% elsif enterprise-apps-public-beta %}public, private, or internal{% endif %}.{% ifversion fpt or ghec %} If you set your {% data variables.product.prodname_github_app %} registration to public, any user on {% data variables.product.github %} can install it and authorize it. If you set your {% data variables.product.prodname_github_app %} registration to private, it can only be installed on the account that owns the app. Only members of the organization that owns it can authorize it. -{% elsif ghes %} If you set your {% data variables.product.prodname_github_app %} registration to public, anyone on your {% data variables.product.prodname_ghe_server %} instance can install it, but the app is not available outside of your instance. If you set your {% data variables.product.prodname_github_app %} registration to private, it can only be installed on the account that owns the app.{% endif %} +{% elsif ghes %} If you set your {% data variables.product.prodname_github_app %} registration to public, anyone on your {% data variables.product.prodname_ghe_server %} instance can install it, but the app is not available outside of your instance. If you set your {% data variables.product.prodname_github_app %} registration to private, it can only be installed on the account that owns the app. {% endif %} {% ifversion enterprise-apps-public-beta %} {% data variables.product.prodname_github_apps %} owned by an enterprise account{% ifversion ghec %}, or by a {% data variables.enterprise.prodname_managed_user %} in an enterprise,{% endif %} have "internal" visibility. Internal apps can only be installed by organizations within the enterprise and authorized by users within the enterprise. Members of the enterprise and unaffiliated users can authorize these apps, but outside collaborators cannot. diff --git a/content/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md b/content/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md index 39aec313387e..e1de874a2592 100644 --- a/content/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md +++ b/content/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md @@ -37,6 +37,9 @@ All listings should meet the following requirements, regardless of whether they * Listings must include valid contact information for the publisher. * Listings must have a relevant description of the application. * Listings must specify a pricing plan. +* Listings must have a valid link to a privacy policy. +* Listings must have a valid link to a Terms of Service page. +* Listings must provide a method to receive support through a valid support link and/or a support email address. * Apps must provide value to customers and integrate with the platform in some way beyond authentication. * Apps must be publicly available in {% data variables.product.prodname_marketplace %} and cannot be in {% data variables.release-phases.public_preview %} or available by invite only, with the exception of {% data variables.copilot.copilot_extensions_short %}. * Apps must have webhook events set up to notify the publisher of any plan changes or cancellations using the {% data variables.product.prodname_marketplace %} API. For more information, see [AUTOTITLE](/apps/github-marketplace/using-the-github-marketplace-api-in-your-app). diff --git a/content/apps/oauth-apps/building-oauth-apps/best-practices-for-creating-an-oauth-app.md b/content/apps/oauth-apps/building-oauth-apps/best-practices-for-creating-an-oauth-app.md index f73037413ac4..ac34085b4a88 100644 --- a/content/apps/oauth-apps/building-oauth-apps/best-practices-for-creating-an-oauth-app.md +++ b/content/apps/oauth-apps/building-oauth-apps/best-practices-for-creating-an-oauth-app.md @@ -42,12 +42,10 @@ After signing in a user, app developers must take additional steps to ensure tha ### Verify a user's access to your app -Your OAuth app can be accessed by users outside your organization or enterprise. If you intend an app to be used only by members of your organization or enterprise, you should check the user's membership status when the user signs in to your app. +{% ifversion ghec %}An {% data variables.product.prodname_oauth_app %} created by a {% data variables.enterprise.prodname_managed_user %} or {% data variables.enterprise.prodname_emu_org %} can only be accessed by members of the enterprise that owns those accounts. Otherwise, your{% else %}Your{% endif %} OAuth app can be accessed by users outside your organization or enterprise. If you intend an app to be used only by members of your organization or enterprise, you should check the user's membership status when the user signs in to your app. To find the list of organizations a user is a member of, you can use the "List organizations for the authenticated user" endpoint. Then you can validate this list against a list of approved organizations for your app. For more information, see [AUTOTITLE](/rest/orgs/orgs#list-organizations-for-the-authenticated-user). -{% data reusables.emus.oauth-app-note %} - ## Secure your app's credentials With a client secret, your app can authorize a user and generate user access tokens. These tokens can be used to make API requests on behalf of a user. diff --git a/content/apps/using-github-apps/saml-and-github-apps.md b/content/apps/using-github-apps/saml-and-github-apps.md index e15bf428737d..38f236924f25 100644 --- a/content/apps/using-github-apps/saml-and-github-apps.md +++ b/content/apps/using-github-apps/saml-and-github-apps.md @@ -1,7 +1,7 @@ --- title: SAML and GitHub Apps shortTitle: SAML with apps -intro: "If your organization uses SAML SSO, you may need to start an active SAML session for your organization before authorizing, installing, or requesting a {% data variables.product.prodname_github_app %}." +intro: "If your organization is SSO protected, you may need to start an active SSO session for your organization before authorizing, installing, or requesting a {% data variables.product.prodname_github_app %}." versions: ghec: '*' topics: @@ -9,17 +9,21 @@ topics: - SSO --- -## Authorizing {% data variables.product.prodname_github_apps %} for SAML users +## Authorizing {% data variables.product.prodname_github_apps %} for users -If your organization uses SAML SSO, you may not be able to see your organization's resources after you authorize a {% data variables.product.prodname_github_app %}. For example, if the app displays a list of repositories, you may not see repositories owned by your organization. To resolve this issue, follow these steps: +If your organization or enterprise uses SSO, you may not be able to see your organization's resources or enterprise's `internal` resources after you authorize a {% data variables.product.prodname_github_app %}. For example, if the app displays a list of repositories, you may not see repositories owned by your organization. To resolve this issue, follow these steps: -1. Go to `https://github.com/orgs/ORGANIZATION-NAME/sso` to start an active SAML session for your organization. Replace `ORGANIZATION-NAME` with the name of your organization. +1. Go to `https://github.com/orgs/ORGANIZATION-NAME/sso` or `https://github.com/enterprises/ENTERPRISE_NAME/sso` to start an active SSO session for that account. Replace `ORGANIZATION-NAME` or `ENTERPRISE-NAME` with the name of the appropriate account. Attempting to access any resources owned by the account will aso trigger SSO if you don't have a session already. 1. Revoke your authorization of the {% data variables.product.prodname_github_app %}. For more information, see [AUTOTITLE](/apps/using-github-apps/reviewing-and-revoking-authorization-of-github-apps). 1. Reauthorize the {% data variables.product.prodname_github_app %}. {% data variables.product.prodname_github_app %} authorization is initiated by the app and varies based on the app. For example, some {% data variables.product.prodname_github_apps %} may have you click on a link or enter a command in your terminal. For more information, see [AUTOTITLE](/apps/using-github-apps/authorizing-github-apps). -## Installing or requesting {% data variables.product.prodname_github_apps %} for SAML users +SSO can be enforced at the organization or enterprise level. If it's enforced at the enterprise level, having an SSO session with any organization allows access to all organizations. This will appear as a credential authorization on the token for each organization you are a member of at the time of the application authorization. -If your organization uses SAML, you may not see your organization listed when you try to install or request an {% data variables.product.prodname_github_app %} for your organization. To resolve this issue, follow these steps: +For access to `internal` data in an enterprise, such as repositories, projects, or packages, you must have an SSO session for any organization within that enterprise. Even if the organizations do not use the same SSO provider (for instance, as a result of a merger or acquisition), any organization's SSO session is sufficient for `internal` access. -1. Go to `https://github.com/orgs/ORGANIZATION-NAME/sso` to start an active SAML session for your organization. Replace `ORGANIZATION-NAME` with the name of your organization. +## Installing or requesting {% data variables.product.prodname_github_apps %} for organizations with SSO + +If your organization or enterprise uses SSO, you may not see your organization listed when you try to install or request an {% data variables.product.prodname_github_app %} for your organization. To resolve this issue, follow these steps: + +1. Go to `https://github.com/orgs/ORGANIZATION-NAME/sso` or `https://github.com/enterprises/ENTERPRISE_NAME/sso` to start an active SSO session for that account. Replace `ORGANIZATION-NAME` or `ENTERPRISE-NAME` with the name of the appropriate account. 1. Try to install or request the {% data variables.product.prodname_github_app %} again. For more information, see [AUTOTITLE](/apps/using-github-apps/installing-a-github-app-from-a-third-party), [AUTOTITLE](/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations), and [AUTOTITLE](/apps/using-github-apps/requesting-a-github-app-from-your-organization-owner). diff --git a/content/authentication/authenticating-with-saml-single-sign-on/about-authentication-with-saml-single-sign-on.md b/content/authentication/authenticating-with-saml-single-sign-on/about-authentication-with-saml-single-sign-on.md index 7fba7cf0e834..3941e72ef240 100644 --- a/content/authentication/authenticating-with-saml-single-sign-on/about-authentication-with-saml-single-sign-on.md +++ b/content/authentication/authenticating-with-saml-single-sign-on/about-authentication-with-saml-single-sign-on.md @@ -1,6 +1,6 @@ --- title: About authentication with SAML single sign-on -intro: 'You can access an organization that uses SAML single sign-on (SSO) by authenticating through an identity provider (IdP).' +intro: 'You can access an organization that uses single sign-on (SSO) by authenticating through an identity provider (IdP).' redirect_from: - /articles/about-authentication-with-saml-single-sign-on - /github/authenticating-to-github/about-authentication-with-saml-single-sign-on @@ -11,13 +11,15 @@ topics: - SSO shortTitle: SAML single sign-on --- -## About authentication with SAML SSO +## About authentication with SSO -{% data reusables.saml.dotcom-saml-explanation %} Organization owners can invite your personal account on {% data variables.product.prodname_dotcom %} to join their organization that uses SAML SSO, which allows you to contribute to the organization and retain your existing identity and contributions on {% data variables.product.prodname_dotcom %}. +{% data reusables.saml.dotcom-saml-explanation %} Organization owners can invite your personal account on {% data variables.product.prodname_dotcom %} to join their organization that uses SSO, which allows you to contribute to the organization and retain your existing identity and contributions on {% data variables.product.prodname_dotcom %}. + +Access to SSO protected `internal` resources in an enterprise, such as repositories, projects, and packages, requires an SSO session for any organization in the enterprise. This allows code and work to be shared across organizations in an enterprise without requiring users to join each organization. If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %}, you will instead use a new account that is provisioned for you and controlled by your enterprise. {% data reusables.enterprise-accounts.emu-more-info-account %} -When you attempt to access most resources within an organization that uses SAML SSO, {% data variables.product.prodname_dotcom %} will redirect you to the organization's SAML IdP to authenticate. After you successfully authenticate with your account on the IdP, the IdP redirects you back to {% data variables.product.prodname_dotcom %}, where you can access the organization's resources. +When you attempt to access most resources within an organization that uses SSO, {% data variables.product.prodname_dotcom %} will redirect you to the organization's SSO IdP to authenticate. After you successfully authenticate with your account on the IdP, the IdP redirects you back to {% data variables.product.prodname_dotcom %}, where you can access the organization's resources. {% data reusables.saml.resources-without-sso %} @@ -45,9 +47,9 @@ To use a new or existing {% data variables.product.pat_generic %} or SSH key wit ## About {% data variables.product.prodname_oauth_apps %}, {% data variables.product.prodname_github_apps %}, and SAML SSO -You must have an active SAML session each time you authorize an {% data variables.product.prodname_oauth_app %} or {% data variables.product.prodname_github_app %} to access an organization that uses or enforces SAML SSO. You can create an active SAML session by navigating to `https://github.com/orgs/ORGANIZATION-NAME/sso` in your browser. +You must have an active SSO session each time you authorize an {% data variables.product.prodname_oauth_app %} or {% data variables.product.prodname_github_app %} in order to access an organization that uses or enforces SSO. If you do not have an active session for an organization that requires SSO when you sign into the app, the app will be unable to access that organization. You can create an active SSO session by navigating to `https://github.com/orgs/ORGANIZATION-NAME/sso` or `https://github.com/enterprises/ENTERPRISE-NAME/sso` in your browser. -After an enterprise or organization owner enables or enforces SAML SSO for an organization, and after you authenticate via SAML for the first time, you must reauthorize any {% data variables.product.prodname_oauth_apps %} or {% data variables.product.prodname_github_apps %} that you previously authorized to access the organization. +After an enterprise or organization owner enables or enforces SSO for an organization, and after you authenticate via SSO for the first time, you must reauthorize any {% data variables.product.prodname_oauth_apps %} or {% data variables.product.prodname_github_apps %} that you previously authorized to access the organization. To see the {% data variables.product.prodname_oauth_apps %} you've authorized, visit your [{% data variables.product.prodname_oauth_apps %} page](https://github.com/settings/applications). To see the {% data variables.product.prodname_github_apps %} you've authorized, visit your [{% data variables.product.prodname_github_apps %} page](https://github.com/settings/apps/authorizations). diff --git a/content/authentication/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md b/content/authentication/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md index 0b48ca465f4e..c7a464cbde2b 100644 --- a/content/authentication/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md +++ b/content/authentication/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md @@ -12,7 +12,7 @@ topics: - SSO shortTitle: '{% data variables.product.pat_generic_caps %} with SAML' --- -You must authorize your {% data variables.product.pat_v1 %} after creation before the token can access an organization that uses SAML single sign-on (SSO). For more information about creating a new {% data variables.product.pat_v1 %}, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). {% data variables.product.pat_v2_caps %}s are authorized during token creation, before access to the organization is granted. +You must authorize your {% data variables.product.pat_v1 %} after creation before the token can access an organization that uses SAML single sign-on (SSO). Access to `internal` resources (repositories, projects, and packages) in an enterprise requires an SSO authorization for an organization within an enterprise. For more information about creating a new {% data variables.product.pat_v1 %}, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). {% data variables.product.pat_v2_caps %}s are authorized during token creation, before access to the organization is granted. {% data reusables.saml.must-authorize-linked-identity %} diff --git a/content/code-security/securing-your-organization/index.md b/content/code-security/securing-your-organization/index.md index 31056b7911be..cfbec678568c 100644 --- a/content/code-security/securing-your-organization/index.md +++ b/content/code-security/securing-your-organization/index.md @@ -16,7 +16,7 @@ children: - /enabling-security-features-in-your-organization - /managing-the-security-of-your-organization - /understanding-your-organizations-exposure-to-leaked-secrets - - /understanding-your-organizations-exposure-to-vulnerabilites + - /understanding-your-organizations-exposure-to-vulnerabilities - /fixing-security-alerts-at-scale - /troubleshooting-security-configurations --- diff --git a/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/about-your-exposure-to-vulnerable-dependencies.md b/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilities/about-your-exposure-to-vulnerable-dependencies.md similarity index 97% rename from content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/about-your-exposure-to-vulnerable-dependencies.md rename to content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilities/about-your-exposure-to-vulnerable-dependencies.md index 8d3084920c17..d08e165cf282 100644 --- a/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/about-your-exposure-to-vulnerable-dependencies.md +++ b/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilities/about-your-exposure-to-vulnerable-dependencies.md @@ -11,6 +11,8 @@ topics: - Secret Protection - Organizations - Security +redirect_from: + - /code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/about-your-exposure-to-vulnerable-dependencies --- ## About exposure to vulnerable dependencies diff --git a/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/index.md b/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilities/index.md similarity index 76% rename from content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/index.md rename to content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilities/index.md index 1c34afbd11dd..cdedac8638b0 100644 --- a/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/index.md +++ b/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilities/index.md @@ -1,5 +1,5 @@ --- -title: 'Understanding your organization''s exposure to vulnerabilities' +title: 'Understanding your organization''s exposure to vulnerabilities' shortTitle: Exposure to vulnerabilities intro: 'Understanding your organization''s exposure to vulnerable dependencies is crucial for identifying and prioritizing security risks. This awareness allows you to prioritize remediation efforts, reduce the likelihood of security breaches, protect sensitive data, and maintain the overall integrity and reputation of the organization.' versions: @@ -12,4 +12,6 @@ topics: children: - /about-your-exposure-to-vulnerable-dependencies - /prioritizing-dependabot-alerts-using-metrics +redirect_from: + - /code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites --- diff --git a/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/prioritizing-dependabot-alerts-using-metrics.md b/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilities/prioritizing-dependabot-alerts-using-metrics.md similarity index 97% rename from content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/prioritizing-dependabot-alerts-using-metrics.md rename to content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilities/prioritizing-dependabot-alerts-using-metrics.md index 6b6bab154392..45cb70e8c4b1 100644 --- a/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/prioritizing-dependabot-alerts-using-metrics.md +++ b/content/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilities/prioritizing-dependabot-alerts-using-metrics.md @@ -11,6 +11,8 @@ topics: - Dependabot - Organizations - Security +redirect_from: + - /code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/prioritizing-dependabot-alerts-using-metrics --- ## Prioritizing {% data variables.product.prodname_dependabot_alerts %} using metrics diff --git a/content/code-security/security-overview/viewing-metrics-for-dependabot-alerts.md b/content/code-security/security-overview/viewing-metrics-for-dependabot-alerts.md index 3cd8cc413ffb..f191c65b111d 100644 --- a/content/code-security/security-overview/viewing-metrics-for-dependabot-alerts.md +++ b/content/code-security/security-overview/viewing-metrics-for-dependabot-alerts.md @@ -21,7 +21,7 @@ topics: The metrics overview for {% data variables.product.prodname_dependabot %} provides valuable insights for both developers and application security (AppSec) managers. The data in the {% data variables.product.prodname_dependabot %} dashboard page contains a vulnerability prioritization funnel that helps with efficiently prioritizing, remediating, and tracking vulnerabilities across multiple repositories. This ensures that the most critical risks are addressed first and that security improvements can be measured over time. -For more information about how AppSec managers can best use these metrics to optimize alert fixing, see [AUTOTITLE](/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/prioritizing-dependabot-alerts-using-metrics). +For more information about how AppSec managers can best use these metrics to optimize alert fixing, see [AUTOTITLE](/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilities/prioritizing-dependabot-alerts-using-metrics). You can see {% data variables.product.prodname_dependabot %} metrics if you have: diff --git a/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md b/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md index 59e7e9588482..ce987d00af70 100644 --- a/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md +++ b/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md @@ -131,7 +131,7 @@ To keep your local branches in sync with their remotes and avoid merge conflicts > [!NOTE] > We generally don't close an issue via a commit. To close an issue, open a pull request and add "Closes #1234" to the description. The linked issue will be closed when the pull request is merged. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue). -* Make commit messages clear, detailed, and imperative. For example: "Adds a conceptual article about 2FA," not "Add info." +* Make commit messages clear, detailed, and imperative. For example: "Add conceptual article about 2FA," not "Add info." * Try not to leave uncommitted changes in your local branch when you finish working for the day. Get to a good stopping point and commit and push your changes so your work is backed up to the remote repository. * Only push up to {% data variables.product.prodname_dotcom %} after you've made a few commits. Pushing after every commit adds noise to our ops channels on Slack and causes unnecessary builds to run. @@ -140,6 +140,7 @@ To keep your local branches in sync with their remotes and avoid merge conflicts When you try to merge two branches that contain different changes to the same part of a file, you will get a merge conflict. In our workflow, this most often occurs when merging `main` down into a local topic branch. There are two ways to handle merge conflicts: + * Edit the file in your text editor and choose which changes to keep. Then commit the updated file to your topic branch from the command line. * [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). diff --git a/content/copilot/tutorials/index.md b/content/copilot/tutorials/index.md index 5e6222a27ec4..a2f5514e573a 100644 --- a/content/copilot/tutorials/index.md +++ b/content/copilot/tutorials/index.md @@ -18,7 +18,7 @@ children: - /learning-a-new-programming-language-with-github-copilot - /modernizing-legacy-code-with-github-copilot - /using-copilot-to-migrate-a-project - - /upgrading-java-projects-with-github-copilot + - /upgrading-projects-with-github-copilot - /rolling-out-github-copilot-at-scale redirect_from: - /copilot/using-github-copilot/guides-on-using-github-copilot diff --git a/content/copilot/tutorials/upgrading-java-projects-with-github-copilot.md b/content/copilot/tutorials/upgrading-java-projects-with-github-copilot.md deleted file mode 100644 index 3e9c8e2207aa..000000000000 --- a/content/copilot/tutorials/upgrading-java-projects-with-github-copilot.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Upgrading Java projects with GitHub Copilot -shortTitle: Upgrade Java projects -intro: 'You can use {% data variables.product.prodname_copilot %} to upgrade your Maven and Gradle Java applications.' -versions: - feature: copilot -topics: - - Copilot -redirect_from: - - /copilot/using-github-copilot/guides-on-using-github-copilot/upgrading-java-projects-with-github-copilot ---- - -> [!NOTE] -> GitHub Copilot app modernization – upgrade for Java is currently in {% data variables.release-phases.public_preview %} and subject to change. - -## Introduction - -{% data variables.product.prodname_copilot %} can help streamline the process of upgrading Java applications. The "GitHub Copilot app modernization – upgrade for Java" {% data variables.product.prodname_vscode %} extension assists with every step of upgrading your Java project's runtime and/or framework version. - -* Analyzing the project and dependencies to generate an upgrade plan. -* Executing code transformations based on the plan. -* Automatically fixing issues during the upgrade. -* Providing detailed logs, commit history, and output. -* Performing security scans (CVE) and behavioral consistency checks post-upgrade. -* Summarizing key changes including updated dependencies and resolved issues. -* Generating unit tests independently of the upgrade process. - -This solution supports both Maven and Gradle build tools and facilitates upgrades between Java versions 8, 11, 17, and 21. - -## Prerequisites - -Before getting started you must have the following: - -* Either a **{% data variables.copilot.copilot_for_business %}** or **{% data variables.copilot.copilot_enterprise %}** [subscription plan](/copilot/about-github-copilot/subscription-plans-for-github-copilot). -* The latest version of [{% data variables.product.prodname_vscode %}](https://code.visualstudio.com/). -* The "GitHub Copilot app modernization – upgrade for Java (preview)" extension installed in {% data variables.product.prodname_vscode %}. -* Installed versions of both the source and target JDKs. -* A Git-based Java project using Maven or Gradle. -* For Maven-based projects, access to the public Maven Central repository. -* Make sure `chat.extensionTools.enabled` is set to `true` in your {% data variables.product.prodname_vscode %} settings. This setting might be controlled by your organization. - ->[!NOTE] For Gradle projects, only wrapper-based builds (Gradle v5+) are supported. Projects using Kotlin DSL are not currently supported. - -## Upgrading a Java project - -### 1. Install the required extension - -To get started, you'll need to install the “GitHub Copilot app modernization – upgrade for Java (preview)” extension for {% data variables.product.prodname_vscode %}. - -1. Open {% data variables.product.prodname_vscode %}. -1. Click on “Extensions”. -1. Search for “GitHub Copilot app modernization – upgrade for Java (preview)” and click “Download”. -1. Restart {% data variables.product.prodname_vscode %}. - -### 2. Use {% data variables.copilot.copilot_chat %} in agent mode and generate the upgrade plan - -Now you have the extension, you can continue to use {% data variables.product.prodname_copilot %} in agent mode and create a plan for your upgrade. - -1. In {% data variables.product.prodname_vscode %}, open the {% data variables.copilot.copilot_chat %} panel. -1. At the bottom of the chat panel, select **Agent** from the mode dropdown. -1. Enter a prompt describing the upgrade path you need. For example: - - > "Upgrade project to Java 21 and Spring Boot 3.2" - -1. When prompted, click **Continue** to generate an upgrade plan - -### 3. Review and edit the upgrade plan - -{% data variables.product.prodname_copilot %} will analyze your project's structure, JDK, dependencies, and build tool before generating a `plan.md` upgrade plan for your specific circumstances that outlines source and target JDK versions and upgrade paths for frameworks and libraries. - -1. Click on the new `plan.md` tab in {% data variables.product.prodname_vscode %}. -1. Review, and edit if necessary, the plan. Make sure the versions in the plan align with your goals and what you've already specified. -1. When you're ready, click **Continue** to proceed. - -### 4. Apply code changes and fix build issues - -Next, {% data variables.product.prodname_copilot %} will begin transforming your project. This involves using OpenRewrite to apply code changes via predefined recipes and iteratively fixing remaining issues with {% data variables.product.prodname_copilot_short %} through a build/fix loop. - -1. When prompted to "Run Upgrade Java code using OpenRewrite", click **Continue**. Note that this step may take some time. -1. When prompted to "Run Build project and fix errors", click **Continue**. - -You can track the progress of this phase by viewing the `progress.md` file in {% data variables.product.prodname_vscode %}. - -### 5. Check for security vulnerabilities (CVE) and code behavior changes - -To ensure reliability and security, {% data variables.product.prodname_copilot %} performs additional checks. - -1. When prompted to "Run Validate if any modified dependencies have known CVEs", click **Continue**. - - If CVEs are detected, {% data variables.product.prodname_copilot_short %} will try to resolve them. You can review and accept or reject the changes. -1. When prompted to "Run Validate code behavior consistency", click **Continue**. - - If inconsistencies are found, {% data variables.product.prodname_copilot_short %} will again attempt fixes and you can decide which to keep. - -At the end of this process, the tool rebuilds the project and runs one final validation. The process concludes if only minor issues that don’t block the upgrade may remain. Otherwise, it loops back to address outstanding problems. - -### 6. View the Upgrade Summary - -Once completed, {% data variables.product.prodname_copilot_short %} generates a `summary.md` file in your project directory containing: - -* Project metadata. -* Lines of code modified. -* Updated dependencies. -* Description of code changes. -* CVEs and inconsistencies resolved. -* Remaining minor CVE issues (if any). diff --git a/content/copilot/tutorials/upgrading-projects-with-github-copilot.md b/content/copilot/tutorials/upgrading-projects-with-github-copilot.md new file mode 100644 index 000000000000..329ee1d4ac1b --- /dev/null +++ b/content/copilot/tutorials/upgrading-projects-with-github-copilot.md @@ -0,0 +1,39 @@ +--- +title: Upgrading projects with GitHub Copilot +shortTitle: Upgrade projects +intro: 'You can use {% data variables.product.prodname_copilot %} to upgrade your Maven and Gradle Java applications and .NET applications.' +versions: + feature: copilot +topics: + - Copilot +redirect_from: + - /copilot/using-github-copilot/guides-on-using-github-copilot/upgrading-java-projects-with-github-copilot + - /copilot/tutorials/upgrading-java-projects-with-github-copilot +--- + +> [!NOTE] +> "GitHub Copilot app modernization – upgrade for Java" and "GitHub Copilot app modernization – Upgrade for .NET" are currently in {% data variables.release-phases.public_preview %} and subject to change. + +## Introduction + +{% data variables.product.prodname_copilot %} can help streamline the process of modernizing and upgrading your Java and .NET applications. {% data variables.product.prodname_copilot_short %} will analyze the project, generate a plan, automatically fix issues it encounters when carrying out the plan, and produce a summary. + +## Upgrading Java projects + +You can upgrade a Git-based Maven or Gradle Java project using {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vscode %}. You will need: + +* Either a **{% data variables.copilot.copilot_for_business %}** or **{% data variables.copilot.copilot_enterprise %}** [subscription plan](/copilot/about-github-copilot/subscription-plans-for-github-copilot). +* The latest version of [{% data variables.product.prodname_vscode %}](https://code.visualstudio.com/). +* For Maven-based projects, access to the public Maven Central repository. +* Installed versions of both the source and target JDKs. + +For the next steps, see [Quickstart: upgrade a Java project with GitHub Copilot App Modernization - upgrade for Java (preview)](https://learn.microsoft.com/en-gb/java/upgrade/quickstart-upgrade) on Microsoft Learn. + +## Upgrading .NET projects + +You can also upgrade a .NET project using {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vs %}. You will need: + +* Either a **{% data variables.copilot.copilot_pro %}**, **{% data variables.copilot.copilot_pro_plus %}**, **{% data variables.copilot.copilot_for_business %}** or **{% data variables.copilot.copilot_enterprise %}** [subscription plan](/copilot/about-github-copilot/subscription-plans-for-github-copilot). +* The latest release of {% data variables.product.prodname_vs %} Enterprise, Professional or Community 2022. + +For the next steps, see [GitHub Copilot app modernization - upgrade for .NET](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.GitHubCopilotUpgradeAgent) on Microsoft Visual Studio Marketplace. diff --git a/content/github-models/github-models-at-scale/set-up-custom-model-integration-models-byok.md b/content/github-models/github-models-at-scale/set-up-custom-model-integration-models-byok.md index 9068289d5830..a48a98383657 100644 --- a/content/github-models/github-models-at-scale/set-up-custom-model-integration-models-byok.md +++ b/content/github-models/github-models-at-scale/set-up-custom-model-integration-models-byok.md @@ -38,8 +38,8 @@ You must first add the relevant API keys for the organization. After that, your {% data reusables.profile.access_org %} {% data reusables.profile.org_settings %} {% data reusables.organizations.custom-models %} -1. Click **Add custom key**. -1. In the "Add a custom key" dialog, provide details about your key. **Name** and **Key** are compulsory fields. +1. Click **Add API key**. +1. In the "Add the API key" dialog, provide details about your key. **Name** and **API key** are compulsory fields. 1. Click **Save**. ## Enabling custom models @@ -47,7 +47,7 @@ You must first add the relevant API keys for the organization. After that, your {% data reusables.profile.access_org %} {% data reusables.profile.org_settings %} {% data reusables.organizations.models-development %} -1. Under "Models permissions", select **All publishers** to enable models added by custom keys. +1. Under "Models permissions", select **All publishers** to enable models added by API keys. * If this option isn't available, you need to allow the use of the model in the organization. See [AUTOTITLE](/github-models/github-models-at-scale/manage-models-at-scale#controlling-model-usage-in-your-organization). 1. Optionally, select **Only select models** to create a custom list of enabled or disabled models. This allows you to control which models are available to your organization. diff --git a/content/rest/code-scanning/alert-dismissal-requests.md b/content/rest/code-scanning/alert-dismissal-requests.md new file mode 100644 index 000000000000..53300f4b6d0c --- /dev/null +++ b/content/rest/code-scanning/alert-dismissal-requests.md @@ -0,0 +1,13 @@ +--- +title: REST API endpoints for {% data variables.product.prodname_code_scanning %} alert dismissal requests +shortTitle: Alert dismissal requests +intro: Use the REST API to interact with {% data variables.product.prodname_code_scanning %} alert dismissal requests from a repository. +versions: # DO NOT MANUALLY EDIT. CHANGES WILL BE OVERWRITTEN BY A 🤖 + ghec: '*' +topics: + - API +autogenerated: rest +allowTitleToDifferFromFilename: true +--- + + diff --git a/content/rest/code-scanning/index.md b/content/rest/code-scanning/index.md index d103e6ec6a4c..6d878af647e5 100644 --- a/content/rest/code-scanning/index.md +++ b/content/rest/code-scanning/index.md @@ -14,6 +14,7 @@ topics: - Code scanning - REST children: + - /alert-dismissal-requests - /code-scanning autogenerated: rest --- diff --git a/data/features/restrictive-app-authz.yml b/data/features/restrictive-app-authz.yml new file mode 100644 index 000000000000..0d70d314eb7e --- /dev/null +++ b/data/features/restrictive-app-authz.yml @@ -0,0 +1,6 @@ +# Reference: #6142 +# Restricting app authz based on visibility and EMU policies +versions: + fpt: '*' + ghec: '*' + ghes: '>=3.19' diff --git a/package.json b/package.json index 64c778bbf72e..205d36922a11 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ }, "exports": "./src/frame/server.ts", "scripts": { + "ai-edit": "tsx src/ai-editors/scripts/ai-edit.ts", "all-documents": "tsx src/content-render/scripts/all-documents/cli.ts", "analyze-text": "tsx src/search/scripts/analyze-text.ts", "analyze-comment": "tsx src/events/scripts/analyze-comment-cli.ts", @@ -30,6 +31,8 @@ "create-enterprise-issue": "tsx src/ghes-releases/scripts/create-enterprise-issue.ts", "debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES=en nodemon --inspect src/frame/server.ts", "delete-orphan-translation-files": "tsx src/workflows/delete-orphan-translation-files.ts", + "docsaudit": "tsx src/metrics/scripts/docsaudit.ts", + "docstat": "tsx src/metrics/scripts/docstat.ts", "deleted-assets-pr-comment": "tsx src/assets/scripts/deleted-assets-pr-comment.ts", "deleted-features-pr-comment": "tsx src/data-directory/scripts/deleted-features-pr-comment.ts", "deprecate-ghes": "tsx src/ghes-releases/scripts/deprecate/index.ts", diff --git a/src/ai-editors/lib/call-models-api.js b/src/ai-editors/lib/call-models-api.js deleted file mode 100644 index d48a4ee15d81..000000000000 --- a/src/ai-editors/lib/call-models-api.js +++ /dev/null @@ -1,24 +0,0 @@ -const modelsCompletionsEndpoint = 'https://models.github.ai/inference/chat/completions' - -export async function callModelsApi(promptWithContent) { - let aiResponse - try { - const response = await fetch(modelsCompletionsEndpoint, { - method: 'post', - body: JSON.stringify(promptWithContent), - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${process.env.GITHUB_TOKEN}`, - 'X-GitHub-Api-Version': '2022-11-28', - Accept: 'Accept: application/vnd.github+json', - }, - }) - const data = await response.json() - aiResponse = data.choices[0] - } catch (error) { - console.error('Error calling GitHub Models REST API') - throw error - } - - return aiResponse.message.content -} diff --git a/src/ai-editors/lib/call-models-api.ts b/src/ai-editors/lib/call-models-api.ts new file mode 100644 index 000000000000..dda311baa04f --- /dev/null +++ b/src/ai-editors/lib/call-models-api.ts @@ -0,0 +1,60 @@ +const modelsCompletionsEndpoint = 'https://models.github.ai/inference/chat/completions' + +interface ChatMessage { + role: string + content: string +} + +interface ChatCompletionRequest { + messages: ChatMessage[] + model?: string + temperature?: number + max_tokens?: number +} + +interface ChatCompletionChoice { + message: { + content: string + role: string + } + finish_reason: string + index: number +} + +interface ChatCompletionResponse { + choices: ChatCompletionChoice[] + id: string + object: string + created: number + model: string + usage?: { + prompt_tokens: number + completion_tokens: number + total_tokens: number + } +} + +export async function callModelsApi(promptWithContent: ChatCompletionRequest): Promise { + let aiResponse: ChatCompletionChoice + + try { + const response = await fetch(modelsCompletionsEndpoint, { + method: 'post', + body: JSON.stringify(promptWithContent), + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${process.env.GITHUB_TOKEN}`, + 'X-GitHub-Api-Version': '2022-11-28', + Accept: 'Accept: application/vnd.github+json', + }, + }) + + const data: ChatCompletionResponse = await response.json() + aiResponse = data.choices[0] + } catch (error) { + console.error('Error calling GitHub Models REST API') + throw error + } + + return aiResponse.message.content +} diff --git a/src/ai-editors/scripts/ai-edit.js b/src/ai-editors/scripts/ai-edit.ts old mode 100755 new mode 100644 similarity index 75% rename from src/ai-editors/scripts/ai-edit.js rename to src/ai-editors/scripts/ai-edit.ts index cca7cc87c134..ca3633acec4a --- a/src/ai-editors/scripts/ai-edit.js +++ b/src/ai-editors/scripts/ai-edit.ts @@ -6,8 +6,9 @@ import fs from 'fs' import yaml from 'js-yaml' import path from 'path' import ora from 'ora' -import github from '#src/workflows/github.ts' -import { callModelsApi } from '#src/ai-editors/lib/call-models-api.js' +import { callModelsApi } from '@/ai-editors/lib/call-models-api' +import dotenv from 'dotenv' +dotenv.config() const __dirname = path.dirname(fileURLToPath(import.meta.url)) const promptDir = path.join(__dirname, '../prompts') @@ -16,15 +17,36 @@ if (!process.env.GITHUB_TOKEN) { throw new Error('Error! You must have a GITHUB_TOKEN set in an .env file to run this script.') } -const responseTypes = { +interface ResponseTypes { + rewrite: string + list: string + json: string +} + +const responseTypes: ResponseTypes = { rewrite: 'Edit the versioning only. Return the edited content.', list: `Do NOT rewrite the content. Report your edits in numbered list format.`, json: `Do NOT rewrite the content. Report your edits as a JSON list, with the format { lineNumber, currentText, suggestion }.`, } -const validResponseTypes = Object.keys(responseTypes) +const validResponseTypes = Object.keys(responseTypes) as Array + +interface EditorType { + promptFile: string + description: string +} + +interface EditorTypes { + versioning: EditorType + // TODO + // scannability: EditorType + // readability: EditorType + // technical: EditorType + // styleguide: EditorType + // contentModels: EditorType +} -const editorTypes = { +const editorTypes: EditorTypes = { versioning: { promptFile: 'versioning-editor.prompt.yml', description: 'Review against simplifying versioning guidelines.', @@ -54,7 +76,7 @@ const editorTypes = { // Add more here... } -const editorDescriptions = () => { +const editorDescriptions = (): string => { let str = '\n\n' Object.entries(editorTypes).forEach(([ed, edObj]) => { str += `\t${ed}\n\t\t\t${edObj.description}\n\n` @@ -62,6 +84,13 @@ const editorDescriptions = () => { return str } +interface CliOptions { + verbose?: boolean + editor?: Array + response?: keyof ResponseTypes + files: string[] +} + const program = new Command() program @@ -80,7 +109,7 @@ program '-f, --files ', 'One or more content file paths in the content directory', ) - .action((options) => { + .action((options: CliOptions) => { ;(async () => { const spinner = ora('Starting AI review...').start() @@ -88,7 +117,7 @@ program const editors = options.editor || ['versioning'] const response = options.response || 'rewrite' - let responseTypeInstruction + let responseTypeInstruction: string if (validResponseTypes.includes(response)) { responseTypeInstruction = responseTypes[response] } else { @@ -126,7 +155,8 @@ program } } } catch (err) { - spinner.fail(`Error processing file ${file}: ${err.message}`) + const error = err as Error + spinner.fail(`Error processing file ${file}: ${error.message}`) process.exitCode = 1 } } @@ -135,13 +165,31 @@ program program.parse(process.argv) -async function callEditor(editorType, responseTypeInstruction, content) { +interface PromptMessage { + content: string + role: string +} + +interface PromptData { + messages: PromptMessage[] + model?: string + temperature?: number + max_tokens?: number +} + +async function callEditor( + editorType: keyof EditorTypes, + responseTypeInstruction: string, + content: string, +): Promise { const promptName = editorTypes[editorType].promptFile const promptPath = path.join(promptDir, promptName) - const prompt = yaml.load(fs.readFileSync(promptPath, 'utf8')) + const prompt = yaml.load(fs.readFileSync(promptPath, 'utf8')) as PromptData + prompt.messages.forEach((msg) => { msg.content = msg.content.replace('{{responseTypeInstruction}}', responseTypeInstruction) msg.content = msg.content.replace('{{input}}', content) }) + return callModelsApi(prompt) } diff --git a/src/events/components/experiments/experiments.ts b/src/events/components/experiments/experiments.ts index b1da9440f624..7c5e83be7d24 100644 --- a/src/events/components/experiments/experiments.ts +++ b/src/events/components/experiments/experiments.ts @@ -21,7 +21,10 @@ export const EXPERIMENTS = { ai_search_experiment: { key: 'ai_search_experiment', isActive: true, // Set to false when the experiment is over - percentOfUsersToGetExperiment: 30, // 30% of users will get the experiment + // We still use an experiment for the AI Search until we: + // 1. Move analytics over the main dashboard + // 2. Don't require an emergency rollback, which experiments provides us + percentOfUsersToGetExperiment: 100, // 100% of users will get the experiment includeVariationInContext: true, // All events will include the `experiment_variation` of the `ai_search_experiment` limitToLanguages: ['en'], // Only users with the `en` language will be included in the experiment alwaysShowForStaff: true, // When set to true, staff will always see the experiment (determined by the `staffonly` cookie) diff --git a/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json index 66dc27855714..d2f2165e43e8 100644 --- a/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json @@ -8288,4 +8288,4 @@ } ] } -} +} \ No newline at end of file diff --git a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json index 75e64e80181a..f17bd9e3ec2a 100644 --- a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json @@ -1,7 +1,7 @@ { "enterprise_custom_properties": { "title": "Custom properties", - "displayTitle": "Business permissions for \"Custom properties\"", + "displayTitle": "Enterprise permissions for \"Custom properties\"", "permissions": [ { "category": "enterprise-admin", @@ -61,7 +61,7 @@ }, "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", @@ -2264,6 +2264,48 @@ } ] }, + "organization_code_scanning_dismissal_requests": { + "title": "Organization dismissal requests for code scanning", + "displayTitle": "Organization permissions for \"Organization dismissal requests for code scanning\"", + "permissions": [ + { + "category": "code-scanning", + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-an-organization", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/orgs/{org}/dismissal-requests/code-scanning", + "additional-permissions": false, + "access": "read" + }, + { + "category": "code-scanning", + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning", + "additional-permissions": true, + "access": "read" + }, + { + "category": "code-scanning", + "slug": "get-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "additional-permissions": true, + "access": "read" + }, + { + "category": "code-scanning", + "slug": "review-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "patch", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "additional-permissions": true, + "access": "write" + } + ] + }, "organization_private_registries": { "title": "Organization private registries", "displayTitle": "Organization permissions for \"Organization private registries\"", @@ -4961,6 +5003,33 @@ "requestPath": "/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}", "additional-permissions": false, "access": "read" + }, + { + "category": "code-scanning", + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning", + "additional-permissions": true, + "access": "read" + }, + { + "category": "code-scanning", + "slug": "get-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "additional-permissions": true, + "access": "read" + }, + { + "category": "code-scanning", + "slug": "review-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "patch", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "additional-permissions": true, + "access": "read" } ] }, @@ -9002,4 +9071,4 @@ } ] } -} +} \ No newline at end of file diff --git a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json index 8f5bc9c4171c..b59a79100994 100644 --- a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json +++ b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json @@ -1512,6 +1512,12 @@ "verb": "get", "requestPath": "/orgs/{org}/code-scanning/alerts" }, + { + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-an-organization", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/orgs/{org}/dismissal-requests/code-scanning" + }, { "slug": "list-code-scanning-alerts-for-a-repository", "subcategory": "code-scanning", @@ -1631,6 +1637,24 @@ "subcategory": "code-scanning", "verb": "get", "requestPath": "/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}" + }, + { + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning" + }, + { + "slug": "get-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}" + }, + { + "slug": "review-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "patch", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}" } ], "code-security": [ diff --git a/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json index a1cd8431eee8..37fe7ed46828 100644 --- a/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json @@ -1,7 +1,7 @@ { "enterprise_custom_properties": { "title": "Custom properties", - "displayTitle": "Business permissions for \"Custom properties\"", + "displayTitle": "Enterprise permissions for \"Custom properties\"", "permissions": [ { "category": "enterprise-admin", @@ -73,7 +73,7 @@ }, "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", @@ -2742,6 +2742,56 @@ } ] }, + "organization_code_scanning_dismissal_requests": { + "title": "Organization dismissal requests for code scanning", + "displayTitle": "Organization permissions for \"Organization dismissal requests for code scanning\"", + "permissions": [ + { + "category": "code-scanning", + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-an-organization", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/orgs/{org}/dismissal-requests/code-scanning", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, + { + "category": "code-scanning", + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": true + }, + { + "category": "code-scanning", + "slug": "get-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": true + }, + { + "category": "code-scanning", + "slug": "review-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "patch", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "access": "write", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": true + } + ] + }, "organization_private_registries": { "title": "Organization private registries", "displayTitle": "Organization permissions for \"Organization private registries\"", @@ -6019,6 +6069,39 @@ "user-to-server": true, "server-to-server": true, "additional-permissions": false + }, + { + "category": "code-scanning", + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": true + }, + { + "category": "code-scanning", + "slug": "get-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": true + }, + { + "category": "code-scanning", + "slug": "review-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "patch", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": true } ] }, diff --git a/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json b/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json index 3eebdb0b992f..47b2bb717c71 100644 --- a/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json +++ b/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json @@ -1408,6 +1408,12 @@ "verb": "get", "requestPath": "/orgs/{org}/code-scanning/alerts" }, + { + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-an-organization", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/orgs/{org}/dismissal-requests/code-scanning" + }, { "slug": "list-code-scanning-alerts-for-a-repository", "subcategory": "code-scanning", @@ -1527,6 +1533,24 @@ "subcategory": "code-scanning", "verb": "get", "requestPath": "/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}" + }, + { + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning" + }, + { + "slug": "get-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}" + }, + { + "slug": "review-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "patch", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}" } ], "code-security": [ diff --git a/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json b/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json index 8f5bc9c4171c..b59a79100994 100644 --- a/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json +++ b/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json @@ -1512,6 +1512,12 @@ "verb": "get", "requestPath": "/orgs/{org}/code-scanning/alerts" }, + { + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-an-organization", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/orgs/{org}/dismissal-requests/code-scanning" + }, { "slug": "list-code-scanning-alerts-for-a-repository", "subcategory": "code-scanning", @@ -1631,6 +1637,24 @@ "subcategory": "code-scanning", "verb": "get", "requestPath": "/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}" + }, + { + "slug": "list-dismissal-requests-for-code-scanning-alerts-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning" + }, + { + "slug": "get-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}" + }, + { + "slug": "review-a-dismissal-request-for-a-code-scanning-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "patch", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}" } ], "code-security": [ diff --git a/src/github-apps/data/ghes-3.13-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghes-3.13-2022-11-28/fine-grained-pat-permissions.json index e360ad6f8bd5..8ae7bee00417 100644 --- a/src/github-apps/data/ghes-3.13-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghes-3.13-2022-11-28/fine-grained-pat-permissions.json @@ -1,7 +1,7 @@ { "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", @@ -6527,4 +6527,4 @@ } ] } -} +} \ No newline at end of file diff --git a/src/github-apps/data/ghes-3.13-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghes-3.13-2022-11-28/server-to-server-permissions.json index ea44c8cfb4e7..4c69a60f5936 100644 --- a/src/github-apps/data/ghes-3.13-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghes-3.13-2022-11-28/server-to-server-permissions.json @@ -1,7 +1,7 @@ { "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", diff --git a/src/github-apps/data/ghes-3.14-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghes-3.14-2022-11-28/fine-grained-pat-permissions.json index 23ed1f8913fd..e862e8eec6a2 100644 --- a/src/github-apps/data/ghes-3.14-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghes-3.14-2022-11-28/fine-grained-pat-permissions.json @@ -1,7 +1,7 @@ { "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", @@ -6659,4 +6659,4 @@ } ] } -} +} \ No newline at end of file diff --git a/src/github-apps/data/ghes-3.14-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghes-3.14-2022-11-28/server-to-server-permissions.json index 8ee51bad2fac..4ab01d7df872 100644 --- a/src/github-apps/data/ghes-3.14-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghes-3.14-2022-11-28/server-to-server-permissions.json @@ -1,7 +1,7 @@ { "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", diff --git a/src/github-apps/data/ghes-3.15-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghes-3.15-2022-11-28/fine-grained-pat-permissions.json index e51bb0c1b42b..9b6a96326b2a 100644 --- a/src/github-apps/data/ghes-3.15-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghes-3.15-2022-11-28/fine-grained-pat-permissions.json @@ -1,7 +1,7 @@ { "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", @@ -6767,4 +6767,4 @@ } ] } -} +} \ No newline at end of file diff --git a/src/github-apps/data/ghes-3.15-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghes-3.15-2022-11-28/server-to-server-permissions.json index 6af75f134a9b..5d98f087396b 100644 --- a/src/github-apps/data/ghes-3.15-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghes-3.15-2022-11-28/server-to-server-permissions.json @@ -1,7 +1,7 @@ { "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", diff --git a/src/github-apps/data/ghes-3.16-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghes-3.16-2022-11-28/fine-grained-pat-permissions.json index 771e80d91687..caabdbc6be47 100644 --- a/src/github-apps/data/ghes-3.16-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghes-3.16-2022-11-28/fine-grained-pat-permissions.json @@ -1,7 +1,7 @@ { "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", @@ -6827,4 +6827,4 @@ } ] } -} +} \ No newline at end of file diff --git a/src/github-apps/data/ghes-3.16-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghes-3.16-2022-11-28/server-to-server-permissions.json index d3270373cf39..8e1de330a93b 100644 --- a/src/github-apps/data/ghes-3.16-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghes-3.16-2022-11-28/server-to-server-permissions.json @@ -1,7 +1,7 @@ { "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", diff --git a/src/github-apps/data/ghes-3.17-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghes-3.17-2022-11-28/fine-grained-pat-permissions.json index 14e134c38203..769ff8f6c13d 100644 --- a/src/github-apps/data/ghes-3.17-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghes-3.17-2022-11-28/fine-grained-pat-permissions.json @@ -1,7 +1,7 @@ { "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", @@ -6899,4 +6899,4 @@ } ] } -} +} \ No newline at end of file diff --git a/src/github-apps/data/ghes-3.17-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghes-3.17-2022-11-28/server-to-server-permissions.json index 5bde08a9e536..e514e8e2f214 100644 --- a/src/github-apps/data/ghes-3.17-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghes-3.17-2022-11-28/server-to-server-permissions.json @@ -1,7 +1,7 @@ { "enterprise_scim": { "title": "Enterprise SCIM", - "displayTitle": "Business permissions for \"Enterprise SCIM\"", + "displayTitle": "Enterprise permissions for \"Enterprise SCIM\"", "permissions": [ { "category": "enterprise-admin", diff --git a/src/github-apps/lib/config.json b/src/github-apps/lib/config.json index e6073ba1720f..254723f085c3 100644 --- a/src/github-apps/lib/config.json +++ b/src/github-apps/lib/config.json @@ -60,5 +60,5 @@ "2022-11-28" ] }, - "sha": "3ae8ad33b4276583395c1b28852650f329018927" + "sha": "042ebdf85f1f5234751ac9603b977c9929e72c66" } \ No newline at end of file diff --git a/src/metrics/lib/dates.js b/src/metrics/lib/dates.ts similarity index 71% rename from src/metrics/lib/dates.js rename to src/metrics/lib/dates.ts index 355c78d3a8a8..d44ff794d0da 100644 --- a/src/metrics/lib/dates.js +++ b/src/metrics/lib/dates.ts @@ -1,11 +1,17 @@ -const dateOpts = { +const dateOpts: Intl.DateTimeFormatOptions = { year: 'numeric', month: 'long', day: 'numeric', } +export interface DateRange { + endDate: string + startDate: string + friendlyRange: string +} + // Default to 30 days ago if a range option is not provided -export function getDates(range = '30') { +export function getDates(range: string | number = '30'): DateRange { // Get current datetime in ISO format const today = new Date() const todayISO = today.toISOString() @@ -21,7 +27,7 @@ export function getDates(range = '30') { } } -function getDaysAgo(range) { +function getDaysAgo(range: number): Date { const daysAgo = new Date() daysAgo.setDate(daysAgo.getDate() - range) return daysAgo diff --git a/src/metrics/lib/kusto-client.js b/src/metrics/lib/kusto-client.ts similarity index 59% rename from src/metrics/lib/kusto-client.js rename to src/metrics/lib/kusto-client.ts index eb8b13bdbd50..72a84a062eb6 100644 --- a/src/metrics/lib/kusto-client.js +++ b/src/metrics/lib/kusto-client.ts @@ -1,16 +1,28 @@ -import { Client as KustoClient, KustoConnectionStringBuilder } from 'azure-kusto-data' +import { + Client as KustoClient, + KustoConnectionStringBuilder, + KustoResultTable, +} from 'azure-kusto-data' import dotenv from 'dotenv' + dotenv.config() + if (!(process.env.KUSTO_CLUSTER || process.env.KUSTO_DATABASE)) { console.error(`Add KUSTO_CLUSTER and KUSTO_DATABASE to your .env file`) process.exit(0) } -const KUSTO_CLUSTER = process.env.KUSTO_CLUSTER -const KUSTO_DATABASE = process.env.KUSTO_DATABASE -export function getKustoClient() { - let client +const KUSTO_CLUSTER = process.env.KUSTO_CLUSTER! +const KUSTO_DATABASE = process.env.KUSTO_DATABASE! + +export interface KustoQueryResult { + primaryResults: KustoResultTable[] +} + +export function getKustoClient(): KustoClient | undefined { + let client: KustoClient | undefined + try { const kcsb = KustoConnectionStringBuilder.withAzLoginIdentity(KUSTO_CLUSTER) client = new KustoClient(kcsb) @@ -18,10 +30,17 @@ export function getKustoClient() { console.error('Error connecting to Kusto') console.error(error) } + return client } -export async function runQuery(pathToFetch, query, client, queryType, verbose = false) { +export async function runQuery( + pathToFetch: string | string[], + query: string, + client: KustoClient, + queryType: string, + verbose: boolean = false, +): Promise { // Display query if verbose mode is on if (verbose) { console.log(`\n--- EXECUTING QUERY FOR "${queryType.toUpperCase()}" ---`) diff --git a/src/metrics/queries/bounces.js b/src/metrics/queries/bounces.ts similarity index 52% rename from src/metrics/queries/bounces.js rename to src/metrics/queries/bounces.ts index 465d6896bac3..0ca65b7fb2bc 100644 --- a/src/metrics/queries/bounces.js +++ b/src/metrics/queries/bounces.ts @@ -1,25 +1,36 @@ -import { runQuery } from '#src/metrics/lib/kusto-client.js' -import { SHARED_DECLARATIONS, SHARED_FILTERS } from '#src/metrics/queries/constants.js' +import { runQuery } from '@/metrics/lib/kusto-client' +import { SHARED_DECLARATIONS, SHARED_FILTERS } from '@/metrics/queries/constants' +import type { DateRange } from '@/metrics/lib/dates' +import type { Client as KustoClient } from 'azure-kusto-data' const QUERY_TYPE = 'bounces' export async function getBounces( - pathToFetch, - client, - dates, - version = null, - verbose = false, - queryType = QUERY_TYPE, -) { + pathToFetch: string | string[], + client: KustoClient, + dates: DateRange, + version: string | null = null, + verbose: boolean = false, + queryType: string = QUERY_TYPE, +): Promise { const query = getBouncesQuery(pathToFetch, dates, version) const results = await runQuery(pathToFetch, query, client, queryType, verbose) + + if (!results) { + return '0%' + } + const data = JSON.parse(results.primaryResults[0].toString()).data[0] // Extract Bounces const bounces = data.Bounces return bounces } -export function getBouncesQuery(pathToFetch, dates, version) { +export function getBouncesQuery( + pathToFetch: string | string[], + dates: DateRange, + version: string | null, +): string { return ` ${SHARED_DECLARATIONS(pathToFetch, dates, version)} let _exits = () { @@ -28,8 +39,8 @@ export function getBouncesQuery(pathToFetch, dates, version) { }; _exits | summarize Bounces=round( - countif(exit_scroll_length < 0.1 and exit_visit_duration < 5) / - toreal(count()), + countif(exit_scroll_length < 0.1 and exit_visit_duration < 5) / + toreal(count()), 2 ) | project Bounces=strcat(toint( diff --git a/src/metrics/queries/constants.js b/src/metrics/queries/constants.ts similarity index 86% rename from src/metrics/queries/constants.js rename to src/metrics/queries/constants.ts index be732f5f01a7..5e060f8a47dc 100644 --- a/src/metrics/queries/constants.js +++ b/src/metrics/queries/constants.ts @@ -1,5 +1,11 @@ +import type { DateRange } from '@/metrics/lib/dates' + // SHARED QUERY CONSTANTS -export const SHARED_DECLARATIONS = (path, dates, version) => +export const SHARED_DECLARATIONS = ( + path: string | string[], + dates: DateRange, + version: string | null, +): string => ` let _article = dynamic(['${Array.isArray(path) ? path.join("', '") : path}']); let _articleType = dynamic(null); diff --git a/src/metrics/queries/exits-to-support.js b/src/metrics/queries/exits-to-support.ts similarity index 60% rename from src/metrics/queries/exits-to-support.js rename to src/metrics/queries/exits-to-support.ts index a4ac2d156d86..ff85d2201874 100644 --- a/src/metrics/queries/exits-to-support.js +++ b/src/metrics/queries/exits-to-support.ts @@ -1,25 +1,36 @@ -import { runQuery } from '#src/metrics/lib/kusto-client.js' -import { SHARED_DECLARATIONS, SHARED_FILTERS } from '#src/metrics/queries/constants.js' +import { runQuery } from '@/metrics/lib/kusto-client' +import { SHARED_DECLARATIONS, SHARED_FILTERS } from '@/metrics/queries/constants' +import type { DateRange } from '@/metrics/lib/dates' +import type { Client as KustoClient } from 'azure-kusto-data' const QUERY_TYPE = 'exits' export async function getExitsToSupport( - pathToFetch, - client, - dates, - version = null, - verbose = false, - queryType = QUERY_TYPE, -) { + pathToFetch: string | string[], + client: KustoClient, + dates: DateRange, + version: string | null = null, + verbose: boolean = false, + queryType: string = QUERY_TYPE, +): Promise { const query = getExitsQueryStatement(pathToFetch, dates, version) const results = await runQuery(pathToFetch, query, client, queryType, verbose) + + if (!results) { + return '0%' + } + const data = JSON.parse(results.primaryResults[0].toString()).data[0] // Extract Column1 const exitsToSupport = data.Column1 return exitsToSupport } -export function getExitsQueryStatement(pathToFetch, dates, version) { +export function getExitsQueryStatement( + pathToFetch: string | string[], + dates: DateRange, + version: string | null, +): string { return ` ${SHARED_DECLARATIONS(pathToFetch, dates, version)} let _links = () { @@ -30,7 +41,7 @@ export function getExitsQueryStatement(pathToFetch, dates, version) { | where isempty(link_samesite) or link_samesite == false | where link_samepage != true // allow false or null | extend link_url_parsed=parse_url(link_url) - | extend IsSupport=tostring(link_url_parsed.Host) == "support.github.com" + | extend IsSupport=tostring(link_url_parsed.Host) == "support.github.com" and tostring(link_url_parsed.path) != "/enterprise/server-upgrade" | summarize Ratio=round(countif(IsSupport) / toreal(count()), 2) | project strcat(toint(Ratio * 100), '%') diff --git a/src/metrics/queries/survey-score.js b/src/metrics/queries/survey-score.ts similarity index 55% rename from src/metrics/queries/survey-score.js rename to src/metrics/queries/survey-score.ts index 5c42290eb5b6..caf7624d9f4f 100644 --- a/src/metrics/queries/survey-score.js +++ b/src/metrics/queries/survey-score.ts @@ -1,25 +1,36 @@ -import { runQuery } from '#src/metrics/lib/kusto-client.js' -import { SHARED_DECLARATIONS, SHARED_FILTERS } from '#src/metrics/queries/constants.js' +import { runQuery } from '@/metrics/lib/kusto-client' +import { SHARED_DECLARATIONS, SHARED_FILTERS } from '@/metrics/queries/constants' +import type { DateRange } from '@/metrics/lib/dates' +import type { Client as KustoClient } from 'azure-kusto-data' const QUERY_TYPE = 'score' export async function getScore( - pathToFetch, - client, - dates, - version = null, - verbose = false, - queryType = QUERY_TYPE, -) { + pathToFetch: string | string[], + client: KustoClient, + dates: DateRange, + version: string | null = null, + verbose: boolean = false, + queryType: string = QUERY_TYPE, +): Promise { const query = getScoreQuery(pathToFetch, dates, version) const results = await runQuery(pathToFetch, query, client, queryType, verbose) + + if (!results) { + return '0%' + } + const data = JSON.parse(results.primaryResults[0].toString()).data[0] // Extract Score const score = data.Score return score } -export function getScoreQuery(pathToFetch, dates, version) { +export function getScoreQuery( + pathToFetch: string | string[], + dates: DateRange, + version: string | null, +): string { return ` ${SHARED_DECLARATIONS(pathToFetch, dates, version)} let _surveys = () { @@ -33,8 +44,8 @@ export function getScoreQuery(pathToFetch, dates, version) { }; _surveys | summarize Score=round( - (countif(survey_vote) + 0.75 * 30) - / (count() + 30), + (countif(survey_vote) + 0.75 * 30) + / (count() + 30), 2 ) | project Score=strcat(toint(Score * 100), '%') diff --git a/src/metrics/queries/users.js b/src/metrics/queries/users.js deleted file mode 100644 index 0df19d0f4514..000000000000 --- a/src/metrics/queries/users.js +++ /dev/null @@ -1,32 +0,0 @@ -import { runQuery } from '#src/metrics/lib/kusto-client.js' -import { SHARED_DECLARATIONS, SHARED_FILTERS } from '#src/metrics/queries/constants.js' - -const QUERY_TYPE = 'users' - -export async function getUsers( - pathToFetch, - client, - dates, - version = null, - verbose = false, - queryType = QUERY_TYPE, -) { - const query = getUsersQuery(pathToFetch, dates, version) - const results = await runQuery(pathToFetch, query, client, queryType, verbose) - const data = JSON.parse(results.primaryResults[0].toString()).data[0] - // Extract Users - const users = data.Users - return users.toLocaleString() -} - -export function getUsersQuery(pathToFetch, dates, version) { - return ` - ${SHARED_DECLARATIONS(pathToFetch, dates, version)} - let _pages = () { - docs_v0_page_event - ${SHARED_FILTERS} - }; - _pages - | summarize Users=dcount(tostring(context.user)) - ` -} diff --git a/src/metrics/queries/users.ts b/src/metrics/queries/users.ts new file mode 100644 index 000000000000..dc4f197c155e --- /dev/null +++ b/src/metrics/queries/users.ts @@ -0,0 +1,43 @@ +import { runQuery } from '@/metrics/lib/kusto-client' +import { SHARED_DECLARATIONS, SHARED_FILTERS } from '@/metrics/queries/constants' +import type { DateRange } from '@/metrics/lib/dates' +import type { Client as KustoClient } from 'azure-kusto-data' + +const QUERY_TYPE = 'users' + +export async function getUsers( + pathToFetch: string | string[], + client: KustoClient, + dates: DateRange, + version: string | null = null, + verbose: boolean = false, + queryType: string = QUERY_TYPE, +): Promise { + const query = getUsersQuery(pathToFetch, dates, version) + const results = await runQuery(pathToFetch, query, client, queryType, verbose) + + if (!results) { + return '0' + } + + const data = JSON.parse(results.primaryResults[0].toString()).data[0] + // Extract Users + const users = data.Users + return users.toLocaleString() +} + +export function getUsersQuery( + pathToFetch: string | string[], + dates: DateRange, + version: string | null, +): string { + return ` + ${SHARED_DECLARATIONS(pathToFetch, dates, version)} + let _pages = () { + docs_v0_page_event + ${SHARED_FILTERS} + }; + _pages + | summarize Users=dcount(tostring(context.user)) + ` +} diff --git a/src/metrics/queries/view-duration.js b/src/metrics/queries/view-duration.ts similarity index 50% rename from src/metrics/queries/view-duration.js rename to src/metrics/queries/view-duration.ts index 95950e10f8ba..1f53bcee3cea 100644 --- a/src/metrics/queries/view-duration.js +++ b/src/metrics/queries/view-duration.ts @@ -1,25 +1,36 @@ -import { runQuery } from '#src/metrics/lib/kusto-client.js' -import { SHARED_DECLARATIONS, SHARED_FILTERS } from '#src/metrics/queries/constants.js' +import { runQuery } from '@/metrics/lib/kusto-client' +import { SHARED_DECLARATIONS, SHARED_FILTERS } from '@/metrics/queries/constants' +import type { DateRange } from '@/metrics/lib/dates' +import type { Client as KustoClient } from 'azure-kusto-data' const QUERY_TYPE = 'view duration' export async function getViewDuration( - pathToFetch, - client, - dates, - version = null, - verbose = false, - queryType = QUERY_TYPE, -) { + pathToFetch: string | string[], + client: KustoClient, + dates: DateRange, + version: string | null = null, + verbose: boolean = false, + queryType: string = QUERY_TYPE, +): Promise { const query = getViewDurationQuery(pathToFetch, dates, version) const results = await runQuery(pathToFetch, query, client, queryType, verbose) + + if (!results) { + return '0 seconds' + } + const data = JSON.parse(results.primaryResults[0].toString()).data[0] // Extract avg_VisitDuration const viewDuration = data.avg_VisitDuration return `${viewDuration} seconds` } -export function getViewDurationQuery(pathToFetch, dates, version) { +export function getViewDurationQuery( + pathToFetch: string | string[], + dates: DateRange, + version: string | null, +): string { return ` ${SHARED_DECLARATIONS(pathToFetch, dates, version)} let _exits = () { @@ -28,7 +39,7 @@ export function getViewDurationQuery(pathToFetch, dates, version) { }; _exits | summarize VisitDuration=round( - percentile(toreal(exit_visit_duration), 50), + percentile(toreal(exit_visit_duration), 50), 2 ) by bin(timestamp, 1d) diff --git a/src/metrics/queries/views.js b/src/metrics/queries/views.js deleted file mode 100644 index 80438d8c05ca..000000000000 --- a/src/metrics/queries/views.js +++ /dev/null @@ -1,32 +0,0 @@ -import { runQuery } from '#src/metrics/lib/kusto-client.js' -import { SHARED_DECLARATIONS, SHARED_FILTERS } from '#src/metrics/queries/constants.js' - -const QUERY_TYPE = 'views' - -export async function getViews( - pathToFetch, - client, - dates, - version = null, - verbose = false, - queryType = QUERY_TYPE, -) { - const query = getViewsQuery(pathToFetch, dates, version) - const results = await runQuery(pathToFetch, query, client, queryType, verbose) - const data = JSON.parse(results.primaryResults[0].toString()).data[0] - // Extract Views - const views = data.Views - return views.toLocaleString() -} - -export function getViewsQuery(pathToFetch, dates, version) { - return ` - ${SHARED_DECLARATIONS(pathToFetch, dates, version)} - let _pages = () { - docs_v0_page_event - ${SHARED_FILTERS} - }; - _pages - | summarize Views=count() - ` -} diff --git a/src/metrics/queries/views.ts b/src/metrics/queries/views.ts new file mode 100644 index 000000000000..51bab657fd90 --- /dev/null +++ b/src/metrics/queries/views.ts @@ -0,0 +1,43 @@ +import { runQuery } from '@/metrics/lib/kusto-client' +import { SHARED_DECLARATIONS, SHARED_FILTERS } from '@/metrics/queries/constants' +import type { DateRange } from '@/metrics/lib/dates' +import type { Client as KustoClient } from 'azure-kusto-data' + +const QUERY_TYPE = 'views' + +export async function getViews( + pathToFetch: string | string[], + client: KustoClient, + dates: DateRange, + version: string | null = null, + verbose: boolean = false, + queryType: string = QUERY_TYPE, +): Promise { + const query = getViewsQuery(pathToFetch, dates, version) + const results = await runQuery(pathToFetch, query, client, queryType, verbose) + + if (!results) { + return '0' + } + + const data = JSON.parse(results.primaryResults[0].toString()).data[0] + // Extract Views + const views = data.Views + return views.toLocaleString() +} + +export function getViewsQuery( + pathToFetch: string | string[], + dates: DateRange, + version: string | null, +): string { + return ` + ${SHARED_DECLARATIONS(pathToFetch, dates, version)} + let _pages = () { + docs_v0_page_event + ${SHARED_FILTERS} + }; + _pages + | summarize Views=count() + ` +} diff --git a/src/metrics/scripts/docsaudit.js b/src/metrics/scripts/docsaudit.ts similarity index 72% rename from src/metrics/scripts/docsaudit.js rename to src/metrics/scripts/docsaudit.ts index ff87cafee1b1..011998939751 100644 --- a/src/metrics/scripts/docsaudit.js +++ b/src/metrics/scripts/docsaudit.ts @@ -4,28 +4,33 @@ import fs from 'fs' import path from 'path' import { fileURLToPath } from 'url' import { Command } from 'commander' -import walkFiles from '#src/workflows/walk-files.ts' +import walkFiles from '@/workflows/walk-files' import readFrontmatter from '@/frame/lib/read-frontmatter.js' -import { getKustoClient } from '#src/metrics/lib/kusto-client.js' -import { getDates } from 'src/metrics/lib/dates.js' -import { getViews } from '#src/metrics/queries/views.js' -import { getUsers } from '#src/metrics/queries/users.js' +import { getKustoClient } from '@/metrics/lib/kusto-client' +import { getDates, type DateRange } from '@/metrics/lib/dates' +import { getViews } from '@/metrics/queries/views' +import { getUsers } from '@/metrics/queries/users' const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) const ROOTDIR = process.cwd() +interface CliOptions { + range?: string + verbose?: boolean +} + const program = new Command() program .name('docsaudit') .description('Get data about a top-level docs product and output a CSV') .argument('', 'Name of the content directory you want to audit, e.g., actions') - .option('-r, --range ', 'Number of days to look back', 30) + .option('-r, --range ', 'Number of days to look back', '30') .option('--verbose', 'Display Kusto queries being executed') .parse(process.argv) -const options = program.opts() +const options = program.opts() const [auditDirName] = program.args const contentDir = path.join(ROOTDIR, 'content') const auditDir = path.join(contentDir, auditDirName) @@ -37,27 +42,32 @@ if (!fs.existsSync(auditDir)) { } // Get dates object in format { endDate, startDate, friendlyRange } -const dates = getDates(options.range) +const dates: DateRange = getDates(options.range) const files = walkFiles(auditDir, ['.md']) console.log(`Auditing the ${files.length} "${auditDirName}" files. This may take a while.\n`) main() -async function main() { +async function main(): Promise { const client = getKustoClient() + if (!client) { + console.error('Failed to initialize Kusto client') + process.exit(1) + } + let csvString = `title,path,versions,${options.range}d views,${options.range}d users\n` console.log(`Assembling data for these CSV columns: ${csvString}`) // Get the title, path, and versions from the filesystem // Get the views and users from the Kusto API - const results = [] + const results: string[] = [] for (const file of files) { const contents = await fs.promises.readFile(file) const contentPath = path.relative(ROOTDIR, file) const { data } = readFrontmatter(contents) - const versionString = JSON.stringify(data.versions).replaceAll('"', "'") + const versionString = JSON.stringify(data?.versions || {}).replaceAll('"', "'") const pathToQuery = getPathToQuery(file) // Pass null to get all versions (the default if no version is provided) const version = null @@ -65,7 +75,7 @@ async function main() { const isFirst = results.length === 0 const views = await getViews(pathToQuery, client, dates, version, options.verbose && isFirst) const users = await getUsers(pathToQuery, client, dates, version, options.verbose && isFirst) - const csvEntry = `"${data.title}","${contentPath}","${versionString}","${views}","${users}"` + const csvEntry = `"${data?.title || 'Unknown'}","${contentPath}","${versionString}","${views}","${users}"` console.log(csvEntry) results.push(csvEntry) } @@ -75,6 +85,6 @@ async function main() { console.log(`Done! Wrote ${outputFile}`) } -function getPathToQuery(file) { +function getPathToQuery(file: string): string { return path.relative(contentDir, file).replace('/index.md', '').replace('.md', '') } diff --git a/src/metrics/scripts/docstat.js b/src/metrics/scripts/docstat.ts old mode 100755 new mode 100644 similarity index 84% rename from src/metrics/scripts/docstat.js rename to src/metrics/scripts/docstat.ts index 65428ccb276b..3fbc8b79a63d --- a/src/metrics/scripts/docstat.js +++ b/src/metrics/scripts/docstat.ts @@ -6,14 +6,14 @@ import { Command } from 'commander' import chalk from 'chalk' import ora from 'ora' import frontmatter from '@/frame/lib/read-frontmatter.js' -import { getKustoClient } from '#src/metrics/lib/kusto-client.js' -import { getDates } from 'src/metrics/lib/dates.js' -import { getViews } from '#src/metrics/queries/views.js' -import { getUsers } from '#src/metrics/queries/users.js' -import { getViewDuration } from '#src/metrics/queries/view-duration.js' -import { getBounces } from '#src/metrics/queries/bounces.js' -import { getScore } from '#src/metrics/queries/survey-score.js' -import { getExitsToSupport } from '#src/metrics/queries/exits-to-support.js' +import { getKustoClient } from '@/metrics/lib/kusto-client' +import { getDates, type DateRange } from '@/metrics/lib/dates' +import { getViews } from '@/metrics/queries/views' +import { getUsers } from '@/metrics/queries/users' +import { getViewDuration } from '@/metrics/queries/view-duration' +import { getBounces } from '@/metrics/queries/bounces' +import { getScore } from '@/metrics/queries/survey-score' +import { getExitsToSupport } from '@/metrics/queries/exits-to-support' const { green, white, red, blue } = chalk @@ -22,6 +22,68 @@ const DOCS_API_PATH = 'https://docs.github.com/api/pagelist/en' const FREE_PRO_TEAM = 'free-pro-team@latest' const ENTERPRISE_REGEX = /enterprise-(server|cloud)@/ +interface CliOptions { + range?: string + compare?: boolean + views?: boolean + users?: boolean + viewDuration?: boolean + bounces?: boolean + score?: boolean + exits?: boolean + json?: boolean + skipValidation?: boolean + redirects?: boolean + fptOnly?: boolean + verbose?: boolean + defaultToAll?: boolean + showDocset?: boolean + allVersions?: boolean +} + +interface QueryResults { + views?: string + viewsDocset?: string + users?: string + usersDocset?: string + viewDuration?: string + viewDurationDocset?: string + bounces?: string + bouncesDocset?: string + score?: string + scoreDocset?: string + exits?: string + exitsDocset?: string +} + +interface JsonOutput { + daysRange: string + startDate: string + endDate: string + dateRange: string + inputUrl: string + data: { + path: string + views?: string + users?: string + viewDuration?: string + bounces?: string + score?: string + exits?: string + } + docset?: { + path: string + data: { + views?: string + users?: string + viewDuration?: string + bounces?: string + score?: string + exits?: string + } + } +} + const program = new Command() program @@ -37,7 +99,7 @@ program - Exits to support`, ) .argument('', 'URL to query data for') - .option('-r, --range ', 'Number of days to look back', 30) + .option('-r, --range ', 'Number of days to look back', '30') .option('-c, --compare', 'Compare with top-level docset data') .option('-v, --views', 'Get page views') .option('-u, --users', 'Get unique users') @@ -55,7 +117,7 @@ program .option('--verbose', 'Display Kusto queries being executed') .parse(process.argv) -const options = program.opts() +const options = program.opts() // If specific options are not provided, default to all options.defaultToAll = !( @@ -84,7 +146,7 @@ const providedPath = program.args[0] let cleanPath = getCleanPath(providedPath) // Get the version -let version = getVersion(cleanPath) +let version: string | null = getVersion(cleanPath) let usingFptOnly = !!options.fptOnly // If the URL does not specify a version, default to all versions unless --fptOnly is passed @@ -127,7 +189,7 @@ if (options.allVersions) version = null const docsetPath = cleanPath.split('/')[0] // Get redirect_from frontmatter and include those paths in the queries -let redirects = [] +let redirects: string[] = [] if (options.redirects) { let contentPath = path.join('content', cleanPath) contentPath = fs.existsSync(contentPath) @@ -135,19 +197,25 @@ if (options.redirects) { : `${contentPath}.md` const { data } = frontmatter(fs.readFileSync(contentPath, 'utf8')) // If redirect_from paths exists, they'll be in this format: /foo/bar - redirects = (data.redirect_from || []).map((oldPath) => oldPath.replace('/', '')) // remove leading '/' + redirects = (data?.redirect_from || []).map((oldPath: string) => oldPath.replace('/', '')) // remove leading '/' } const queryPaths = [cleanPath].concat(redirects) // Get dates object in format { endDate, startDate, friendlyRange } -const dates = getDates(options.range) +const dates: DateRange = getDates(options.range) -async function main() { +async function main(): Promise { const spinner = ora('Connecting to Kusto...').start() try { const client = getKustoClient() + + if (!client) { + spinner.fail('Failed to connect to Kusto') + process.exit(1) + } + spinner.text = 'Connected! Querying Kusto...' // Only show docset stats if option is passed AND if the given path is not already a docset. @@ -157,8 +225,8 @@ async function main() { } // Create query promises for all requested metrics - const queryPromises = [] - const results = {} + const queryPromises: Promise[] = [] + const results: QueryResults = {} // Setup all the promises for parallel execution if (options.views) { @@ -296,8 +364,8 @@ async function main() { // Output JSON and exit if (options.json) { - const jsonOutput = { - daysRange: options.range, + const jsonOutput: JsonOutput = { + daysRange: options.range || '30', startDate: dates.startDate, endDate: dates.endDate, dateRange: dates.friendlyRange, @@ -358,7 +426,7 @@ async function main() { return // Exit early } - console.log(white(`Last ${options.range} days:`), blue(dates.friendlyRange)) + console.log(white(`Last ${options.range || '30'} days:`), blue(dates.friendlyRange)) console.log(green('-------------------------------------------')) console.log(green('Path:'), white(cleanPath)) if (options.redirects) { @@ -435,7 +503,7 @@ main().catch((error) => { // Given input: https://docs.github.com/en/copilot/managing-copilot/ // Use: copilot/managing-copilot -function getCleanPath(providedPath) { +function getCleanPath(providedPath: string): string { let clean = providedPath const cleanArr = clean.split('?') // remove query params if (cleanArr.length > 1) cleanArr.pop() @@ -454,13 +522,13 @@ function getCleanPath(providedPath) { return clean } -function getVersion(cleanPath) { +function getVersion(cleanPath: string): string { const pathParts = cleanPath.split('/') const version = ENTERPRISE_REGEX.test(pathParts[0]) ? pathParts[0] : FREE_PRO_TEAM return version } -function removeVersionSegment(cleanPath, version) { +function removeVersionSegment(cleanPath: string, version: string): string { if (version === FREE_PRO_TEAM) return cleanPath const pathParts = cleanPath.split('/') pathParts.shift() @@ -469,7 +537,7 @@ function removeVersionSegment(cleanPath, version) { } // Try to find the path in the list of valid pages at https://docs.github.com/api/pagelist/en -async function validatePath(cleanPath, version) { +async function validatePath(cleanPath: string, version: string): Promise { // Only Kusto uses 'index' for the homepage; the Docs API uses '/en' const basePath = cleanPath === 'index' ? '' : cleanPath @@ -478,16 +546,18 @@ async function validatePath(cleanPath, version) { ? path.join('/', 'en', basePath) : path.join('/', 'en', version, basePath) - let data + let data: string try { const response = await fetch(VERSIONED_DOCS_API_PATH) data = await response.text() } catch (err) { console.error(`Error fetching data from ${VERSIONED_DOCS_API_PATH}`) + throw err } if (data.startsWith('{')) { - if (JSON.parse(data).error) { + const parsedData = JSON.parse(data) + if (parsedData.error) { console.error(data) process.exit(1) } diff --git a/src/rest/data/ghec-2022-11-28/schema.json b/src/rest/data/ghec-2022-11-28/schema.json index 28534d3c88ff..29f55db22601 100644 --- a/src/rest/data/ghec-2022-11-28/schema.json +++ b/src/rest/data/ghec-2022-11-28/schema.json @@ -992,7 +992,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -6180,7 +6180,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -181919,6 +181919,1320 @@ } ] } + ], + "alert-dismissal-requests": [ + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/orgs/{org}/dismissal-requests/code-scanning", + "title": "List dismissal requests for code scanning alerts for an organization", + "category": "code-scanning", + "subcategory": "alert-dismissal-requests", + "parameters": [ + { + "name": "org", + "description": "

The organization name. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "reviewer", + "description": "

Filter alert dismissal requests by the handle of the GitHub user who reviewed the dismissal request.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "requester", + "description": "

Filter alert dismissal requests by the handle of the GitHub user who requested the dismissal.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "time_period", + "description": "

The time period to filter by.

\n

For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "hour", + "day", + "week", + "month" + ], + "default": "month" + } + }, + { + "name": "request_status", + "description": "

Filter alert dismissal requests by status. When specified, only requests with this status will be returned.

", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "open", + "approved", + "expired", + "denied", + "all" + ], + "default": "all" + } + }, + { + "name": "repository_name", + "description": "

The name of the repository to filter on.

", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "per_page", + "description": "

The number of results per page (max 100). For more information, see \"Using pagination in the REST API.\"

", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "

The page number of the results to fetch. For more information, see \"Using pagination in the REST API.\"

", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization dismissal requests for code scanning\" organization permissions": "read" + } + ] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "org": "ORG" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "

A list of alert dismissal requests.

", + "example": [ + { + "id": 21, + "number": 42, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "code_scanning_alert_dismissal", + "data": [ + { + "reason": "won't fix", + "alert_number": 1 + } + ], + "resource_identifier": "123/10", + "status": "denied", + "requester_comment": "Won't fix", + "expires_at": "2024-07-08T08:43:03Z", + "created_at": "2024-07-01T08:43:03Z", + "responses": [ + { + "id": 42, + "reviewer": { + "actor_id": 4, + "actor_name": "octocat" + }, + "status": "denied", + "created_at": "2024-07-02T08:43:04Z" + } + ], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1", + "html_url": "https://github.com/octo-org/smile/code-scanning/alerts/1" + }, + { + "id": 12, + "number": 24, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "code_scanning_alert_dismissal", + "data": [ + { + "reason": "won't fix", + "alert_number": 2 + } + ], + "resource_identifier": "123/12", + "status": "denied", + "requester_comment": "Token is already revoked, I'll remove it later", + "expires_at": "2024-07-08T07:43:03Z", + "created_at": "2024-07-01T07:43:03Z", + "responses": [ + { + "id": 42, + "reviewer": { + "actor_id": 4, + "actor_name": "octocat" + }, + "status": "denied", + "created_at": "2024-07-02T08:43:04Z" + } + ], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/2", + "html_url": "https://github.com/octo-org/smile/code-scanning/alerts/2" + } + ], + "schema": { + "type": "array", + "items": { + "title": "Code scanning alert dismissal request", + "description": "Alert dismisal request made by a user asking to dismiss a code scanning alert.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The unique identifier of the dismissal request." + }, + "number": { + "type": "integer", + "format": "int64", + "description": "The number uniquely identifying the dismissal request within its repository." + }, + "repository": { + "type": "object", + "description": "The repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the repository the dismissal request is for." + }, + "name": { + "type": "string", + "description": "The name of the repository the dismissal request is for." + }, + "full_name": { + "type": "string", + "description": "The full name of the repository the dismissal request is for." + } + } + }, + "organization": { + "type": "object", + "description": "The organization associated with the repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the organization." + }, + "name": { + "type": "string", + "description": "The name of the organization." + } + } + }, + "requester": { + "type": "object", + "description": "The user who requested the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who requested the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who requested the dismissal request." + } + } + }, + "request_type": { + "type": "string", + "description": "The type of request." + }, + "data": { + "type": [ + "array", + "null" + ], + "description": "Data describing the dismissal request metadata.", + "items": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the dismissal request." + }, + "alert_number": { + "type": "string", + "description": "alert number." + }, + "pr_review_thread_id": { + "type": "string", + "description": "The ID of the pull request review thread." + } + } + } + }, + "resource_identifier": { + "type": "string", + "description": "The unique identifier for the request type of the dismissal request.", + "examples": [ + "827efc6d56897b048c772eb4087f854f46256132" + ] + }, + "status": { + "type": "string", + "description": "The status of the dismissal request.", + "enum": [ + "pending", + "denied", + "approved", + "expired" + ] + }, + "requester_comment": { + "type": [ + "string", + "null" + ], + "description": "The comment the requester provided when creating the dismissal request." + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request will expire." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request was created." + }, + "responses": { + "type": [ + "array", + "null" + ], + "description": "The responses to the dismissal request.", + "items": { + "title": "Dismissal request response", + "description": "A response made by a requester to dismiss the request.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the response to the dismissal request." + }, + "reviewer": { + "type": "object", + "description": "The user who reviewed the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who reviewed the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who reviewed the dismissal request." + } + } + }, + "message": { + "type": [ + "string", + "null" + ], + "description": "The response comment of the reviewer." + }, + "status": { + "type": "string", + "description": "The response status to the dismissal request until dismissed.", + "enum": [ + "approved", + "denied", + "dismissed" + ] + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the response to the dismissal request was created." + } + } + } + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1" + ] + }, + "html_url": { + "type": "string", + "description": "The URL to view the dismissal request in a browser.", + "format": "uri", + "examples": [ + "https://github.com/octo-org/smile/code-scanning/alerts/1" + ] + } + } + } + } + } + } + ], + "previews": [], + "descriptionHTML": "

Lists dismissal requests for code scanning alerts for all repositories in an organization.

\n

The user must be authorized to review dismissal requests for the organization.\nPersonal access tokens (classic) need the security_events scope to use this endpoint.

", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

A list of alert dismissal requests.

" + }, + { + "httpStatusCode": "403", + "description": "

Forbidden

" + }, + { + "httpStatusCode": "404", + "description": "

Resource not found

" + }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "500", + "description": "

Internal Error

" + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning", + "title": "List dismissal requests for code scanning alerts for a repository", + "category": "code-scanning", + "subcategory": "alert-dismissal-requests", + "parameters": [ + { + "name": "owner", + "description": "

The account owner of the repository. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "description": "

The name of the repository without the .git extension. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "reviewer", + "description": "

Filter alert dismissal requests by the handle of the GitHub user who reviewed the dismissal request.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "requester", + "description": "

Filter alert dismissal requests by the handle of the GitHub user who requested the dismissal.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "time_period", + "description": "

The time period to filter by.

\n

For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "hour", + "day", + "week", + "month" + ], + "default": "month" + } + }, + { + "name": "request_status", + "description": "

Filter alert dismissal requests by status. When specified, only requests with this status will be returned.

", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "open", + "approved", + "expired", + "denied", + "all" + ], + "default": "all" + } + }, + { + "name": "per_page", + "description": "

The number of results per page (max 100). For more information, see \"Using pagination in the REST API.\"

", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "page", + "description": "

The page number of the results to fetch. For more information, see \"Using pagination in the REST API.\"

", + "in": "query", + "schema": { + "type": "integer", + "default": 1 + } + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization dismissal requests for code scanning\" organization permissions": "read", + "\"Code scanning alerts\" repository permissions": "read" + } + ] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "owner": "OWNER", + "repo": "REPO" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "

A list of alert dismissal requests.

", + "example": [ + { + "id": 21, + "number": 42, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "code_scanning_alert_dismissal", + "data": [ + { + "reason": "won't fix", + "alert_number": 1 + } + ], + "resource_identifier": "123/10", + "status": "denied", + "requester_comment": "Won't fix", + "expires_at": "2024-07-08T08:43:03Z", + "created_at": "2024-07-01T08:43:03Z", + "responses": [ + { + "id": 42, + "reviewer": { + "actor_id": 4, + "actor_name": "octocat" + }, + "status": "denied", + "created_at": "2024-07-02T08:43:04Z" + } + ], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1", + "html_url": "https://github.com/octo-org/smile/code-scanning/alerts/1" + }, + { + "id": 12, + "number": 24, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "code_scanning_alert_dismissal", + "data": [ + { + "reason": "won't fix", + "alert_number": 2 + } + ], + "resource_identifier": "123/12", + "status": "denied", + "requester_comment": "Token is already revoked, I'll remove it later", + "expires_at": "2024-07-08T07:43:03Z", + "created_at": "2024-07-01T07:43:03Z", + "responses": [ + { + "id": 42, + "reviewer": { + "actor_id": 4, + "actor_name": "octocat" + }, + "status": "denied", + "created_at": "2024-07-02T08:43:04Z" + } + ], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/2", + "html_url": "https://github.com/octo-org/smile/code-scanning/alerts/2" + } + ], + "schema": { + "type": "array", + "items": { + "title": "Code scanning alert dismissal request", + "description": "Alert dismisal request made by a user asking to dismiss a code scanning alert.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The unique identifier of the dismissal request." + }, + "number": { + "type": "integer", + "format": "int64", + "description": "The number uniquely identifying the dismissal request within its repository." + }, + "repository": { + "type": "object", + "description": "The repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the repository the dismissal request is for." + }, + "name": { + "type": "string", + "description": "The name of the repository the dismissal request is for." + }, + "full_name": { + "type": "string", + "description": "The full name of the repository the dismissal request is for." + } + } + }, + "organization": { + "type": "object", + "description": "The organization associated with the repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the organization." + }, + "name": { + "type": "string", + "description": "The name of the organization." + } + } + }, + "requester": { + "type": "object", + "description": "The user who requested the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who requested the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who requested the dismissal request." + } + } + }, + "request_type": { + "type": "string", + "description": "The type of request." + }, + "data": { + "type": [ + "array", + "null" + ], + "description": "Data describing the dismissal request metadata.", + "items": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the dismissal request." + }, + "alert_number": { + "type": "string", + "description": "alert number." + }, + "pr_review_thread_id": { + "type": "string", + "description": "The ID of the pull request review thread." + } + } + } + }, + "resource_identifier": { + "type": "string", + "description": "The unique identifier for the request type of the dismissal request.", + "examples": [ + "827efc6d56897b048c772eb4087f854f46256132" + ] + }, + "status": { + "type": "string", + "description": "The status of the dismissal request.", + "enum": [ + "pending", + "denied", + "approved", + "expired" + ] + }, + "requester_comment": { + "type": [ + "string", + "null" + ], + "description": "The comment the requester provided when creating the dismissal request." + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request will expire." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request was created." + }, + "responses": { + "type": [ + "array", + "null" + ], + "description": "The responses to the dismissal request.", + "items": { + "title": "Dismissal request response", + "description": "A response made by a requester to dismiss the request.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the response to the dismissal request." + }, + "reviewer": { + "type": "object", + "description": "The user who reviewed the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who reviewed the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who reviewed the dismissal request." + } + } + }, + "message": { + "type": [ + "string", + "null" + ], + "description": "The response comment of the reviewer." + }, + "status": { + "type": "string", + "description": "The response status to the dismissal request until dismissed.", + "enum": [ + "approved", + "denied", + "dismissed" + ] + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the response to the dismissal request was created." + } + } + } + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1" + ] + }, + "html_url": { + "type": "string", + "description": "The URL to view the dismissal request in a browser.", + "format": "uri", + "examples": [ + "https://github.com/octo-org/smile/code-scanning/alerts/1" + ] + } + } + } + } + } + } + ], + "previews": [], + "descriptionHTML": "

Lists dismissal requests for code scanning alerts for a repository.

\n

Delegated alert dismissal must be enabled on the repository.\nPersonal access tokens (classic) need the security_events scope to use this endpoint.

", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

A list of alert dismissal requests.

" + }, + { + "httpStatusCode": "403", + "description": "

Forbidden

" + }, + { + "httpStatusCode": "404", + "description": "

Resource not found

" + }, + { + "httpStatusCode": "500", + "description": "

Internal Error

" + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "title": "Get a dismissal request for a code scanning alert for a repository", + "category": "code-scanning", + "subcategory": "alert-dismissal-requests", + "parameters": [ + { + "name": "owner", + "description": "

The account owner of the repository. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "description": "

The name of the repository without the .git extension. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "alert_number", + "in": "path", + "required": true, + "description": "

The number that identifies the code scanning alert.

", + "schema": { + "type": "integer" + } + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization dismissal requests for code scanning\" organization permissions": "read", + "\"Code scanning alerts\" repository permissions": "read" + } + ] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "owner": "OWNER", + "repo": "REPO", + "alert_number": "ALERT_NUMBER" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "

A single dismissal request.

", + "example": { + "id": 21, + "number": 42, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "code_scanning_alert_dismissal", + "data": [ + { + "reason": "won't fix", + "alert_number": 2 + } + ], + "resource_identifier": "1/1", + "status": "denied", + "requester_comment": "Won't fix", + "expires_at": "2024-07-08T08:43:03Z", + "created_at": "2024-07-01T08:43:03Z", + "responses": [ + { + "id": 42, + "reviewer": { + "actor_id": 4, + "actor_name": "octocat" + }, + "status": "denied", + "created_at": "2024-07-02T08:43:04Z" + } + ], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1", + "html_url": "https://github.com/octo-org/smile/code-scanning/alerts/1" + }, + "schema": { + "title": "Code scanning alert dismissal request", + "description": "Alert dismisal request made by a user asking to dismiss a code scanning alert.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The unique identifier of the dismissal request." + }, + "number": { + "type": "integer", + "format": "int64", + "description": "The number uniquely identifying the dismissal request within its repository." + }, + "repository": { + "type": "object", + "description": "The repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the repository the dismissal request is for." + }, + "name": { + "type": "string", + "description": "The name of the repository the dismissal request is for." + }, + "full_name": { + "type": "string", + "description": "The full name of the repository the dismissal request is for." + } + } + }, + "organization": { + "type": "object", + "description": "The organization associated with the repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the organization." + }, + "name": { + "type": "string", + "description": "The name of the organization." + } + } + }, + "requester": { + "type": "object", + "description": "The user who requested the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who requested the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who requested the dismissal request." + } + } + }, + "request_type": { + "type": "string", + "description": "The type of request." + }, + "data": { + "type": [ + "array", + "null" + ], + "description": "Data describing the dismissal request metadata.", + "items": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the dismissal request." + }, + "alert_number": { + "type": "string", + "description": "alert number." + }, + "pr_review_thread_id": { + "type": "string", + "description": "The ID of the pull request review thread." + } + } + } + }, + "resource_identifier": { + "type": "string", + "description": "The unique identifier for the request type of the dismissal request.", + "examples": [ + "827efc6d56897b048c772eb4087f854f46256132" + ] + }, + "status": { + "type": "string", + "description": "The status of the dismissal request.", + "enum": [ + "pending", + "denied", + "approved", + "expired" + ] + }, + "requester_comment": { + "type": [ + "string", + "null" + ], + "description": "The comment the requester provided when creating the dismissal request." + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request will expire." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request was created." + }, + "responses": { + "type": [ + "array", + "null" + ], + "description": "The responses to the dismissal request.", + "items": { + "title": "Dismissal request response", + "description": "A response made by a requester to dismiss the request.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the response to the dismissal request." + }, + "reviewer": { + "type": "object", + "description": "The user who reviewed the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who reviewed the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who reviewed the dismissal request." + } + } + }, + "message": { + "type": [ + "string", + "null" + ], + "description": "The response comment of the reviewer." + }, + "status": { + "type": "string", + "description": "The response status to the dismissal request until dismissed.", + "enum": [ + "approved", + "denied", + "dismissed" + ] + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the response to the dismissal request was created." + } + } + } + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/repos/octo-org/smile/dismissal-requests/code-scanning/1" + ] + }, + "html_url": { + "type": "string", + "description": "The URL to view the dismissal request in a browser.", + "format": "uri", + "examples": [ + "https://github.com/octo-org/smile/code-scanning/alerts/1" + ] + } + } + } + } + } + ], + "previews": [], + "descriptionHTML": "

Gets a dismissal request to dismiss a code scanning alert in a repository.

\n

Delegated alert dismissal must be enabled on the repository.\nPersonal access tokens (classic) need the security_events scope to use this endpoint.

", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

A single dismissal request.

" + }, + { + "httpStatusCode": "403", + "description": "

Forbidden

" + }, + { + "httpStatusCode": "404", + "description": "

Resource not found

" + }, + { + "httpStatusCode": "500", + "description": "

Internal Error

" + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "patch", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/code-scanning/{alert_number}", + "title": "Review a dismissal request for a code scanning alert for a repository", + "category": "code-scanning", + "subcategory": "alert-dismissal-requests", + "parameters": [ + { + "name": "owner", + "description": "

The account owner of the repository. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "description": "

The name of the repository without the .git extension. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "alert_number", + "in": "path", + "required": true, + "description": "

The number that identifies the code scanning alert.

", + "schema": { + "type": "integer" + } + } + ], + "bodyParameters": [ + { + "type": "string", + "name": "status", + "in": "body", + "description": "

The review action to perform on the bypass request.

", + "isRequired": true, + "enum": [ + "approve", + "deny" + ] + }, + { + "type": "string", + "name": "message", + "in": "body", + "description": "

A message to include with the review. Has a maximum character length of 2048.

", + "isRequired": true + } + ], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization dismissal requests for code scanning\" organization permissions": "write", + "\"Code scanning alerts\" repository permissions": "read" + } + ] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "contentType": "application/json", + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "bodyParameters": { + "status": "approve", + "message": "Used in tests." + }, + "parameters": { + "owner": "OWNER", + "repo": "REPO", + "alert_number": "ALERT_NUMBER" + } + }, + "response": { + "statusCode": "204", + "description": "

Successful update

" + } + } + ], + "previews": [], + "descriptionHTML": "

Approve or deny a dismissal request to dismiss a code scanning alert in a repository.

\n

Delegated alert dismissal must be enabled on the repository and the user must be a dismissal reviewer to access this endpoint.\nPersonal access tokens (classic) need the security_events scope to use this endpoint.

", + "statusCodes": [ + { + "httpStatusCode": "204", + "description": "

Successful update

" + }, + { + "httpStatusCode": "403", + "description": "

Forbidden

" + }, + { + "httpStatusCode": "404", + "description": "

Resource not found

" + }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "500", + "description": "

Internal Error

" + } + ] + } ] }, "code-security": { @@ -280528,7 +281842,7 @@ "\"Administration\" organization permissions": "read" }, { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -281042,7 +282356,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -282590,7 +283904,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -282774,7 +284088,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -283297,7 +284611,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -283379,7 +284693,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -284440,7 +285754,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "read" + "\"Custom properties\" enterprise permissions": "read" } ] }, @@ -284708,7 +286022,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "write" + "\"Custom properties\" enterprise permissions": "write" } ] }, @@ -284948,7 +286262,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "write" + "\"Custom properties\" enterprise permissions": "write" } ] }, @@ -285136,7 +286450,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "read" + "\"Custom properties\" enterprise permissions": "read" } ] }, @@ -285372,7 +286686,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "write" + "\"Custom properties\" enterprise permissions": "write" } ] }, @@ -285570,7 +286884,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Custom properties\" business permissions": "write" + "\"Custom properties\" enterprise permissions": "write" } ] }, @@ -285653,7 +286967,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -285888,7 +287202,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -288097,7 +289411,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -289480,7 +290794,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -292151,7 +293465,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -293535,7 +294849,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -293967,7 +295281,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -294327,7 +295641,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -294620,7 +295934,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -294937,7 +296251,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -295477,7 +296791,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -295990,7 +297304,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -296114,7 +297428,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -296655,7 +297969,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -297372,7 +298686,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -297873,7 +299187,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -298311,7 +299625,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -299319,7 +300633,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, diff --git a/src/rest/data/ghes-3.13-2022-11-28/schema.json b/src/rest/data/ghes-3.13-2022-11-28/schema.json index cbbfc3d6f5b1..6156ead9bfc2 100644 --- a/src/rest/data/ghes-3.13-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.13-2022-11-28/schema.json @@ -957,7 +957,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1033,7 +1033,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1126,7 +1126,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -156852,12 +156852,6 @@ "name": "dismissed_comment", "in": "body", "description": "

The dismissal comment associated with the dismissal of the alert.

" - }, - { - "type": "boolean", - "name": "create_request", - "in": "body", - "description": "

If true, attempt to create an alert dismissal request.

" } ], "progAccess": { @@ -156880,8 +156874,7 @@ "bodyParameters": { "state": "dismissed", "dismissed_reason": "false positive", - "dismissed_comment": "This alert is not actually correct, because there's a sanitizer included in the library.", - "create_request": true + "dismissed_comment": "This alert is not actually correct, because there's a sanitizer included in the library." }, "parameters": { "owner": "OWNER", @@ -201754,7 +201747,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -202132,7 +202125,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -210899,7 +210892,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -211259,7 +211252,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -211552,7 +211545,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -211869,7 +211862,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -212409,7 +212402,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -212922,7 +212915,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -213046,7 +213039,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -213587,7 +213580,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -214304,7 +214297,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -214805,7 +214798,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -215243,7 +215236,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -216251,7 +216244,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, diff --git a/src/rest/data/ghes-3.14-2022-11-28/schema.json b/src/rest/data/ghes-3.14-2022-11-28/schema.json index 2884df768d10..df759579e103 100644 --- a/src/rest/data/ghes-3.14-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.14-2022-11-28/schema.json @@ -553,13 +553,13 @@ } ], "previews": [], - "descriptionHTML": "

Deletes an artifact for a workflow run.\nOAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Deletes an artifact for a workflow run.\nOAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -957,7 +957,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1033,7 +1033,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1126,7 +1126,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -2168,13 +2168,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets the customization template for an OpenID Connect (OIDC) subject claim.

\n

OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

A JSON serialized template for OIDC subject claim customization

" } - ] + ], + "descriptionHTML": "

Gets the customization template for an OpenID Connect (OIDC) subject claim.

\n

OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -2961,13 +2961,13 @@ } ], "previews": [], - "descriptionHTML": "

Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -3178,13 +3178,13 @@ } ], "previews": [], - "descriptionHTML": "

Sets the actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Sets the actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -4737,13 +4737,13 @@ } ], "previews": [], - "descriptionHTML": "

Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Replaces the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -5904,7 +5904,6 @@ } ], "previews": [], - "descriptionHTML": "

Sets the default workflow permissions granted to the GITHUB_TOKEN when running workflows in a repository, and sets if GitHub Actions\ncan submit approving pull request reviews.\nFor more information, see \"Setting the permissions of the GITHUB_TOKEN for your repository.\"

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", @@ -5914,7 +5913,8 @@ "httpStatusCode": "409", "description": "

Conflict response when changing a setting is prevented by the owning organization or enterprise

" } - ] + ], + "descriptionHTML": "

Sets the default workflow permissions granted to the GITHUB_TOKEN when running workflows in a repository, and sets if GitHub Actions\ncan submit approving pull request reviews.\nFor more information, see \"Setting the permissions of the GITHUB_TOKEN for your repository.\"

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" } ], "secrets": [ @@ -6499,13 +6499,13 @@ } ], "previews": [], - "descriptionHTML": "

Deletes a secret in an organization using the secret name.

\n

Authenticated users must have collaborator access to a repository to create, update, or read secrets.

\n

OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Deletes a secret in an organization using the secret name.

\n

Authenticated users must have collaborator access to a repository to create, update, or read secrets.

\n

OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -7561,13 +7561,13 @@ } ], "previews": [], - "descriptionHTML": "

Replaces all repositories for an organization secret when the visibility\nfor repository access is set to selected. The visibility is set when you Create\nor update an organization secret.

\n

Authenticated users must have collaborator access to a repository to create, update, or read secrets.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Replaces all repositories for an organization secret when the visibility\nfor repository access is set to selected. The visibility is set when you Create\nor update an organization secret.

\n

Authenticated users must have collaborator access to a repository to create, update, or read secrets.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -8224,13 +8224,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets a single repository secret without revealing its encrypted value.

\n

The authenticated user must have collaborator access to the repository to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Gets a single repository secret without revealing its encrypted value.

\n

The authenticated user must have collaborator access to the repository to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -9044,13 +9044,13 @@ } ], "previews": [], - "descriptionHTML": "

Deletes a secret in an environment using the secret name.

\n

Authenticated users must have collaborator access to a repository to create, update, or read secrets.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

Default response

" } - ] + ], + "descriptionHTML": "

Deletes a secret in an environment using the secret name.

\n

Authenticated users must have collaborator access to a repository to create, update, or read secrets.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" } ], "self-hosted-runner-groups": [ @@ -10070,13 +10070,13 @@ } ], "previews": [], - "descriptionHTML": "

Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise.

\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise.

\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -10140,13 +10140,13 @@ } ], "previews": [], - "descriptionHTML": "

Adds an organization to the list of selected organizations that can access a self-hosted runner group. The runner group must have visibility set to selected. For more information, see \"Create a self-hosted runner group for an enterprise.\"

\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Adds an organization to the list of selected organizations that can access a self-hosted runner group. The runner group must have visibility set to selected. For more information, see \"Create a self-hosted runner group for an enterprise.\"

\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -11462,13 +11462,13 @@ } ], "previews": [], - "descriptionHTML": "

Deletes a self-hosted runner group for an organization.

\n

OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Deletes a self-hosted runner group for an organization.

\n

OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -12847,13 +12847,13 @@ } ], "previews": [], - "descriptionHTML": "

Removes a repository from the list of selected repositories that can access a self-hosted runner group. The runner group must have visibility set to selected. For more information, see \"Create a self-hosted runner group for an organization.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Removes a repository from the list of selected repositories that can access a self-hosted runner group. The runner group must have visibility set to selected. For more information, see \"Create a self-hosted runner group for an organization.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -13169,13 +13169,13 @@ } ], "previews": [], - "descriptionHTML": "

Replaces the list of self-hosted runners that are part of an organization runner group.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Replaces the list of self-hosted runners that are part of an organization runner group.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -13243,13 +13243,13 @@ } ], "previews": [], - "descriptionHTML": "

Adds a self-hosted runner to a runner group configured in an organization.

\n

OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Adds a self-hosted runner to a runner group configured in an organization.

\n

OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -16034,13 +16034,13 @@ } ], "previews": [], - "descriptionHTML": "

Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.

\n

Example using remove token:

\n

To remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.

\n
./config.sh remove --token TOKEN\n
\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ] + ], + "descriptionHTML": "

Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.

\n

Example using remove token:

\n

To remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.

\n
./config.sh remove --token TOKEN\n
\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -19899,13 +19899,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets a specific self-hosted runner configured in an organization.

\n

Authenticated users must have admin access to the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Gets a specific self-hosted runner configured in an organization.

\n

Authenticated users must have admin access to the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -26737,13 +26737,13 @@ } ], "previews": [], - "descriptionHTML": "

Creates a repository variable that you can reference in a GitHub Actions workflow.

\n

Authenticated users must have collaborator access to a repository to create, update, or read variables.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ] + ], + "descriptionHTML": "

Creates a repository variable that you can reference in a GitHub Actions workflow.

\n

Authenticated users must have collaborator access to a repository to create, update, or read variables.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -27026,13 +27026,13 @@ } ], "previews": [], - "descriptionHTML": "

Deletes a repository variable using the variable name.

\n

Authenticated users must have collaborator access to a repository to create, update, or read variables.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Deletes a repository variable using the variable name.

\n

Authenticated users must have collaborator access to a repository to create, update, or read variables.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -29260,13 +29260,13 @@ } ], "previews": [], - "descriptionHTML": "

Lists jobs for a workflow run. You can use parameters to narrow the list of results. For more information\nabout using parameters, see Parameters.

\n

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Lists jobs for a workflow run. You can use parameters to narrow the list of results. For more information\nabout using parameters, see Parameters.

\n

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

" } ], "workflow-runs": [ @@ -34955,13 +34955,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets a specific workflow run.

\n

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Gets a specific workflow run.

\n

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -35402,13 +35402,13 @@ } ], "previews": [], - "descriptionHTML": "

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -38250,13 +38250,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after\n1 minute. Look for Location: in the response header to find the URL for the download.

\n

Anyone with read access to the repository can use this endpoint.

\n

If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "302", "description": "

Found

" } - ] + ], + "descriptionHTML": "

Gets a redirect URL to download an archive of log files for a specific workflow run attempt. This link expires after\n1 minute. Look for Location: in the response header to find the URL for the download.

\n

Anyone with read access to the repository can use this endpoint.

\n

If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -38333,7 +38333,6 @@ } ], "previews": [], - "descriptionHTML": "

Cancels a workflow run using its id.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "202", @@ -38343,7 +38342,8 @@ "httpStatusCode": "409", "description": "

Conflict

" } - ] + ], + "descriptionHTML": "

Cancels a workflow run using its id.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -40330,13 +40330,13 @@ } ], "previews": [], - "descriptionHTML": "

Re-run all of the failed jobs and their dependent jobs in a workflow run using the id of the workflow run.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ] + ], + "descriptionHTML": "

Re-run all of the failed jobs and their dependent jobs in a workflow run using the id of the workflow run.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -55267,13 +55267,13 @@ } ], "previews": [], - "descriptionHTML": "

Note

\n

\nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

\n
", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Note

\n

\nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

\n
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -62859,13 +62859,13 @@ } ], "previews": [], - "descriptionHTML": "

If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events. Optional: use the fine-grained token with following permission set to view private events: \"Events\" user permissions (read).

\n

Note

\n

\nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

\n
", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events. Optional: use the fine-grained token with following permission set to view private events: \"Events\" user permissions (read).

\n

Note

\n

\nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

\n
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -78406,13 +78406,13 @@ } ], "previews": [], - "descriptionHTML": "

Lists the feeds available to the authenticated user. The response provides a URL for each feed. You can then get a specific feed by sending a request to one of the feed URLs.

\n
    \n
  • Timeline: The GitHub Enterprise Server global public timeline
  • \n
  • User: The public timeline for any user, using uri_template. For more information, see \"Hypermedia.\"
  • \n
  • Current user public: The public timeline for the authenticated user
  • \n
  • Current user: The private timeline for the authenticated user
  • \n
  • Current user actor: The private timeline for activity created by the authenticated user
  • \n
  • Current user organizations: The private timeline for the organizations the authenticated user is a member of.
  • \n
  • Security advisories: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub Enterprise Server.
  • \n
\n

By default, timeline resources are returned in JSON. You can specify the application/atom+xml type in the Accept header to return timeline resources in Atom format. For more information, see \"Media types.\"

\n

Note

\n

\nPrivate feeds are only returned when authenticating via Basic Auth since current feed URIs use the older, non revocable auth tokens.

\n
", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Lists the feeds available to the authenticated user. The response provides a URL for each feed. You can then get a specific feed by sending a request to one of the feed URLs.

\n
    \n
  • Timeline: The GitHub Enterprise Server global public timeline
  • \n
  • User: The public timeline for any user, using uri_template. For more information, see \"Hypermedia.\"
  • \n
  • Current user public: The public timeline for the authenticated user
  • \n
  • Current user: The private timeline for the authenticated user
  • \n
  • Current user actor: The private timeline for activity created by the authenticated user
  • \n
  • Current user organizations: The private timeline for the organizations the authenticated user is a member of.
  • \n
  • Security advisories: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub Enterprise Server.
  • \n
\n

By default, timeline resources are returned in JSON. You can specify the application/atom+xml type in the Accept header to return timeline resources in Atom format. For more information, see \"Media types.\"

\n

Note

\n

\nPrivate feeds are only returned when authenticating via Basic Auth since current feed URIs use the older, non revocable auth tokens.

\n
" } ], "notifications": [ @@ -99824,13 +99824,13 @@ } ], "previews": [], - "descriptionHTML": "

Enables an authenticated GitHub App to find the organization's installation information.

\n

You must use a JWT to access this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Enables an authenticated GitHub App to find the organization's installation information.

\n

You must use a JWT to access this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -101996,13 +101996,13 @@ } ], "previews": [], - "descriptionHTML": "

Enables an authenticated GitHub App to find the user’s installation information.

\n

You must use a JWT to access this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Enables an authenticated GitHub App to find the user’s installation information.

\n

You must use a JWT to access this endpoint.

" } ], "installations": [ @@ -123586,13 +123586,13 @@ } ], "previews": [], - "descriptionHTML": "

Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see GitHub's products in the GitHub Help documentation.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see GitHub's products in the GitHub Help documentation.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -136754,13 +136754,13 @@ } ], "previews": [], - "descriptionHTML": "

Creates a new check run for a specific commit in a repository.

\n

To create a check run, you must use a GitHub App. OAuth apps and authenticated users are not able to create a check suite.

\n

In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs.

\n

Note

\n

\nThe Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array.

\n
", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ] + ], + "descriptionHTML": "

Creates a new check run for a specific commit in a repository.

\n

To create a check run, you must use a GitHub App. OAuth apps and authenticated users are not able to create a check suite.

\n

In a check suite, GitHub limits the number of check runs with the same name to 1000. Once these check runs exceed 1000, GitHub will start to automatically delete older check runs.

\n

Note

\n

\nThe Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array.

\n
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -139729,13 +139729,13 @@ } ], "previews": [], - "descriptionHTML": "

Updates a check run for a specific commit in a repository.

\n

Note

\n

\nThe endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array.

\n
\n

OAuth apps and personal access tokens (classic) cannot use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Updates a check run for a specific commit in a repository.

\n

Note

\n

\nThe endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array.

\n
\n

OAuth apps and personal access tokens (classic) cannot use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -147933,13 +147933,13 @@ } ], "previews": [], - "descriptionHTML": "

Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually Create a check suite.\nYou must have admin permissions in the repository to set preferences for check suites.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually Create a check suite.\nYou must have admin permissions in the repository to set preferences for check suites.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -149869,13 +149869,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets a single check suite using its id.

\n

Note

\n

\nThe Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array and a null value for head_branch.

\n
\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint on a private repository.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Gets a single check suite using its id.

\n

Note

\n

\nThe Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array and a null value for head_branch.

\n
\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint on a private repository.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -151824,13 +151824,13 @@ } ], "previews": [], - "descriptionHTML": "

Lists check suites for a commit ref. The ref can be a SHA, branch name, or a tag name.

\n

Note

\n

\nThe endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array and a null value for head_branch.

\n
\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint on a private repository.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Lists check suites for a commit ref. The ref can be a SHA, branch name, or a tag name.

\n

Note

\n

\nThe endpoints to manage checks only look for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array and a null value for head_branch.

\n
\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint on a private repository.

" } ] }, @@ -156852,12 +156852,6 @@ "name": "dismissed_comment", "in": "body", "description": "

The dismissal comment associated with the dismissal of the alert.

" - }, - { - "type": "boolean", - "name": "create_request", - "in": "body", - "description": "

If true, attempt to create an alert dismissal request.

" } ], "progAccess": { @@ -156880,8 +156874,7 @@ "bodyParameters": { "state": "dismissed", "dismissed_reason": "false positive", - "dismissed_comment": "This alert is not actually correct, because there's a sanitizer included in the library.", - "create_request": true + "dismissed_comment": "This alert is not actually correct, because there's a sanitizer included in the library." }, "parameters": { "owner": "OWNER", @@ -159934,7 +159927,6 @@ } ], "previews": [], - "descriptionHTML": "

This endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\" and \"Best practices for using the REST API.\"

\n

Adding an outside collaborator may be restricted by enterprise administrators. For more information, see \"Enforcing repository management policies in your enterprise.\"

\n

For more information on permission levels, see \"Repository permission levels for an organization\". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the permission being given must be equal to or higher than the org base permission. Otherwise, the request will fail with:

\n
Cannot assign {member} permission of {role name}\n
\n

Note that, if you choose not to pass any parameters, you'll need to set Content-Length to zero when calling out to this endpoint. For more information, see \"HTTP method.\"

\n

Updating an existing collaborator's permission level

\n

The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different permission parameter. The response will be a 204, with no other indication that the permission level changed.

", "statusCodes": [ { "httpStatusCode": "204", @@ -159948,7 +159940,8 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" } - ] + ], + "descriptionHTML": "

This endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\" and \"Best practices for using the REST API.\"

\n

Adding an outside collaborator may be restricted by enterprise administrators. For more information, see \"Enforcing repository management policies in your enterprise.\"

\n

For more information on permission levels, see \"Repository permission levels for an organization\". There are restrictions on which permissions can be granted to organization members when an organization base role is in place. In this case, the permission being given must be equal to or higher than the org base permission. Otherwise, the request will fail with:

\n
Cannot assign {member} permission of {role name}\n
\n

Note that, if you choose not to pass any parameters, you'll need to set Content-Length to zero when calling out to this endpoint. For more information, see \"HTTP method.\"

\n

Updating an existing collaborator's permission level

\n

The endpoint can also be used to change the permissions of an existing collaborator without first removing and re-adding the collaborator. To change the permissions, use the same endpoint and pass a different permission parameter. The response will be a 204, with no other indication that the permission level changed.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -160016,7 +160009,6 @@ } ], "previews": [], - "descriptionHTML": "

Removes a collaborator from a repository.

\n

To use this endpoint, the authenticated user must either be an administrator of the repository or target themselves for removal.

\n

This endpoint also:

\n
    \n
  • Cancels any outstanding invitations sent by the collaborator
  • \n
  • Unassigns the user from any issues
  • \n
  • Removes access to organization projects if the user is not an organization member and is not a collaborator on any other organization repositories.
  • \n
  • Unstars the repository
  • \n
  • Updates access permissions to packages
  • \n
\n

Removing a user as a collaborator has the following effects on forks:

\n
    \n
  • If the user had access to a fork through their membership to this repository, the user will also be removed from the fork.
  • \n
  • If the user had their own fork of the repository, the fork will be deleted.
  • \n
  • If the user still has read access to the repository, open pull requests by this user from a fork will be denied.
  • \n
\n

Note

\n

\nA user can still have access to the repository through organization permissions like base repository permissions.

\n
\n

Although the API responds immediately, the additional permission updates might take some extra time to complete in the background.

\n

For more information on fork permissions, see \"About permissions and visibility of forks\".

", "statusCodes": [ { "httpStatusCode": "204", @@ -160030,7 +160022,8 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" } - ] + ], + "descriptionHTML": "

Removes a collaborator from a repository.

\n

To use this endpoint, the authenticated user must either be an administrator of the repository or target themselves for removal.

\n

This endpoint also:

\n
    \n
  • Cancels any outstanding invitations sent by the collaborator
  • \n
  • Unassigns the user from any issues
  • \n
  • Removes access to organization projects if the user is not an organization member and is not a collaborator on any other organization repositories.
  • \n
  • Unstars the repository
  • \n
  • Updates access permissions to packages
  • \n
\n

Removing a user as a collaborator has the following effects on forks:

\n
    \n
  • If the user had access to a fork through their membership to this repository, the user will also be removed from the fork.
  • \n
  • If the user had their own fork of the repository, the fork will be deleted.
  • \n
  • If the user still has read access to the repository, open pull requests by this user from a fork will be denied.
  • \n
\n

Note

\n

\nA user can still have access to the repository through organization permissions like base repository permissions.

\n
\n

Although the API responds immediately, the additional permission updates might take some extra time to complete in the background.

\n

For more information on fork permissions, see \"About permissions and visibility of forks\".

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -185488,13 +185481,13 @@ } ], "previews": [], - "descriptionHTML": "

Lists all secrets available in an organization without revealing their\nencrypted values.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Lists all secrets available in an organization without revealing their\nencrypted values.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -185572,13 +185565,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -185688,13 +185681,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets a single organization secret without revealing its encrypted value.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Gets a single organization secret without revealing its encrypted value.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -186957,13 +186950,13 @@ } ], "previews": [], - "descriptionHTML": "

Replaces all repositories for an organization secret when the visibility\nfor repository access is set to selected. The visibility is set when you Create\nor update an organization secret.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Replaces all repositories for an organization secret when the visibility\nfor repository access is set to selected. The visibility is set when you Create\nor update an organization secret.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -187456,13 +187449,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets a single repository secret without revealing its encrypted value.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Gets a single repository secret without revealing its encrypted value.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -188236,13 +188229,13 @@ } ], "previews": [], - "descriptionHTML": "

Create a new snapshot of a repository's dependencies.

\n

The authenticated user must have access to the repository.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ] + ], + "descriptionHTML": "

Create a new snapshot of a repository's dependencies.

\n

The authenticated user must have access to the repository.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" } ], "sboms": [ @@ -192608,13 +192601,13 @@ } ], "previews": [], - "descriptionHTML": "

Deletes a deployment branch or tag policy for an environment.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Deletes a deployment branch or tag policy for an environment.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" } ], "environments": [ @@ -195249,13 +195242,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets all custom deployment protection rules that are enabled for an environment. Anyone with read access to the repository can use this endpoint. For more information about environments, see \"Using environments for deployment.\"

\n

For more information about the app that is providing this custom deployment rule, see the documentation for the GET /apps/{app_slug} endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

List of deployment protection rules

" } - ] + ], + "descriptionHTML": "

Gets all custom deployment protection rules that are enabled for an environment. Anyone with read access to the repository can use this endpoint. For more information about environments, see \"Using environments for deployment.\"

\n

For more information about the app that is providing this custom deployment rule, see the documentation for the GET /apps/{app_slug} endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -200656,13 +200649,13 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -200850,13 +200843,13 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -200976,13 +200969,13 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -201044,13 +201037,13 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -201349,13 +201342,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets the statistics about security products for a GitHub Enterprise Server instance.

\n

To use this endpoint, you must be a site admin.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Gets the statistics about security products for a GitHub Enterprise Server instance.

\n

To use this endpoint, you must be a site admin.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -201754,7 +201747,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -202132,7 +202125,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -208160,13 +208153,13 @@ } ], "previews": [], - "descriptionHTML": "

List all pre-receive hooks that are enabled or testing for this organization as well as any disabled hooks that can be configured at the organization level. Globally disabled pre-receive hooks that do not allow downstream configuration are not listed.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

List all pre-receive hooks that are enabled or testing for this organization as well as any disabled hooks that can be configured at the organization level. Globally disabled pre-receive hooks that do not allow downstream configuration are not listed.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -210899,7 +210892,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -211259,7 +211252,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -211552,7 +211545,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -211869,7 +211862,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -212409,7 +212402,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -212922,7 +212915,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -213046,7 +213039,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -213587,7 +213580,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -214304,7 +214297,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -214805,7 +214798,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -215243,7 +215236,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -216251,7 +216244,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -220016,13 +220009,13 @@ } ], "previews": [], - "descriptionHTML": "

Note that you'll need to set Content-Length to zero when calling out to this endpoint. For more information, see \"HTTP method.\"

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Note that you'll need to set Content-Length to zero when calling out to this endpoint. For more information, see \"HTTP method.\"

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -231255,7 +231248,6 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "204", @@ -231273,7 +231265,8 @@ "httpStatusCode": "404", "description": "

Resource not found

" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -315994,13 +315987,13 @@ } ], "previews": [], - "descriptionHTML": "

Lists the most recent migrations, including both exports (which can be started through the REST API) and imports (which cannot be started using the REST API).

\n

A list of repositories is only returned for export migrations.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Lists the most recent migrations, including both exports (which can be started through the REST API) and imports (which cannot be started using the REST API).

\n

A list of repositories is only returned for export migrations.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -319184,7 +319177,6 @@ } ], "previews": [], - "descriptionHTML": "

Unlocks a repository that was locked for migration. You should unlock each migrated repository and delete them when the migration is complete and you no longer need the source data.

", "statusCodes": [ { "httpStatusCode": "204", @@ -319194,7 +319186,8 @@ "httpStatusCode": "404", "description": "

Resource not found

" } - ] + ], + "descriptionHTML": "

Unlocks a repository that was locked for migration. You should unlock each migrated repository and delete them when the migration is complete and you no longer need the source data.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -324565,7 +324558,6 @@ } ], "previews": [], - "descriptionHTML": "

Warning

\n

\nClosing down notice: GitHub Enterprise Server will discontinue the OAuth Authorizations API, which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our web application flow. The OAuth Authorizations API will be removed on November 13, 2020. For more information, including scheduled brownouts, see the blog post.

\n
\n

You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the list your authorizations API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on the application authorizations settings screen within GitHub. The scopes returned are the union of scopes authorized for the application. For example, if an application has one token with repo scope and another token with user scope, the grant will return [\"repo\", \"user\"].

", "statusCodes": [ { "httpStatusCode": "200", @@ -324587,7 +324579,8 @@ "httpStatusCode": "404", "description": "

Resource not found

" } - ] + ], + "descriptionHTML": "

Warning

\n

\nClosing down notice: GitHub Enterprise Server will discontinue the OAuth Authorizations API, which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our web application flow. The OAuth Authorizations API will be removed on November 13, 2020. For more information, including scheduled brownouts, see the blog post.

\n
\n

You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the list your authorizations API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on the application authorizations settings screen within GitHub. The scopes returned are the union of scopes authorized for the application. For example, if an application has one token with repo scope and another token with user scope, the grant will return [\"repo\", \"user\"].

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -336361,13 +336354,13 @@ } ], "previews": [], - "descriptionHTML": "

Lists all GitHub Apps in an organization. The installation count includes\nall GitHub Apps installed on repositories in the organization.

\n

The authenticated user must be an organization owner to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:read scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Lists all GitHub Apps in an organization. The installation count includes\nall GitHub Apps installed on repositories in the organization.

\n

The authenticated user must be an organization owner to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:read scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -339934,13 +339927,13 @@ } ], "previews": [], - "descriptionHTML": "

Deletes a custom role from an organization. Once the custom role has been deleted, any\nuser, team, or invitation with the deleted custom role will be reassigned the inherited role. For more information about custom repository roles, see \"About custom repository roles.\"

\n

The authenticated user must be an administrator for the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Deletes a custom role from an organization. Once the custom role has been deleted, any\nuser, team, or invitation with the deleted custom role will be reassigned the inherited role. For more information about custom repository roles, see \"About custom repository roles.\"

\n

The authenticated user must be an administrator for the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -341725,13 +341718,13 @@ } ], "previews": [], - "descriptionHTML": "

Members of an organization can choose to have their membership publicized or not.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Members of an organization can choose to have their membership publicized or not.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -341926,13 +341919,13 @@ } ], "previews": [], - "descriptionHTML": "

Removes the public membership for the authenticated user from the specified organization, unless public visibility is enforced by default.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Removes the public membership for the authenticated user from the specified organization, unless public visibility is enforced by default.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -347132,7 +347125,6 @@ } ], "previews": [], - "descriptionHTML": "

Lists requests from organization members to access organization resources with a fine-grained personal access token.

\n

Only GitHub Apps can use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", @@ -347154,7 +347146,8 @@ "httpStatusCode": "500", "description": "

Internal Error

" } - ] + ], + "descriptionHTML": "

Lists requests from organization members to access organization resources with a fine-grained personal access token.

\n

Only GitHub Apps can use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -357265,7 +357258,6 @@ } ], "previews": [], - "descriptionHTML": "

Delete a ruleset for an organization.

", "statusCodes": [ { "httpStatusCode": "204", @@ -357279,7 +357271,8 @@ "httpStatusCode": "500", "description": "

Internal Error

" } - ] + ], + "descriptionHTML": "

Delete a ruleset for an organization.

" } ], "security-managers": [ @@ -358873,13 +358866,13 @@ } ], "previews": [], - "descriptionHTML": "

Updates the webhook configuration for an organization. To update more information about the webhook, including the active state and events, use \"Update an organization webhook .\"

\n

You must be an organization owner to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need admin:org_hook scope. OAuth apps cannot list, view, or edit\nwebhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Updates the webhook configuration for an organization. To update more information about the webhook, including the active state and events, use \"Update an organization webhook .\"

\n

You must be an organization owner to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need admin:org_hook scope. OAuth apps cannot list, view, or edit\nwebhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -374008,7 +374001,6 @@ } ], "previews": [], - "descriptionHTML": "

Updates information for a GitHub Enterprise Server Pages site. For more information, see \"About GitHub Pages.

\n

The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", @@ -374026,7 +374018,8 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" } - ] + ], + "descriptionHTML": "

Updates information for a GitHub Enterprise Server Pages site. For more information, see \"About GitHub Pages.

\n

The authenticated user must be a repository administrator, maintainer, or have the 'manage GitHub Pages settings' permission.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -404144,13 +404137,13 @@ } ], "previews": [], - "descriptionHTML": "

Lists review comments for all pull requests in a repository. By default,\nreview comments are in ascending order by ID.

\n

This endpoint supports the following custom media types. For more information, see \"Media types.\"

\n
    \n
  • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
  • \n
  • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
  • \n
  • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
  • \n
  • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
  • \n
", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Lists review comments for all pull requests in a repository. By default,\nreview comments are in ascending order by ID.

\n

This endpoint supports the following custom media types. For more information, see \"Media types.\"

\n
    \n
  • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
  • \n
  • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
  • \n
  • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
  • \n
  • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
  • \n
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -422941,7 +422934,6 @@ } ], "previews": [], - "descriptionHTML": "

Create a reaction to a team discussion comment.

\n

A response with an HTTP 200 status means that you already added the reaction type to this team discussion comment.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions.

\n
\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", @@ -422951,7 +422943,8 @@ "httpStatusCode": "201", "description": "

Created

" } - ] + ], + "descriptionHTML": "

Create a reaction to a team discussion comment.

\n

A response with an HTTP 200 status means that you already added the reaction type to this team discussion comment.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions.

\n
\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -423039,13 +423032,13 @@ } ], "previews": [], - "descriptionHTML": "

Note

\n

\nYou can also specify a team or organization with team_id and org_id using the route DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id.

\n
\n

Delete a reaction to a team discussion comment.

\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ] + ], + "descriptionHTML": "

Note

\n

\nYou can also specify a team or organization with team_id and org_id using the route DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id.

\n
\n

Delete a reaction to a team discussion comment.

\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -460837,13 +460830,13 @@ } } ], - "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. If the repository is not public, 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 app tokens and personal access tokens (classic) need the public_repo or repo scope to create a public repository, and repo scope to create a private repository.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } ], + "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. If the repository is not public, 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 app tokens and personal access tokens (classic) need the public_repo or repo scope to create a public repository, and repo scope to create a private repository.

", "previews": [ "

Creating and using repository templates is currently available for developers to preview. To access this new endpoint during the preview period, you must provide a custom media type in the Accept header:

\n
application/vnd.github.baptiste-preview+json\n
" ] @@ -469038,13 +469031,13 @@ } ], "previews": [], - "descriptionHTML": "

Gets all autolinks that are configured for a repository.

\n

Information about autolinks are only available to repository administrators.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Gets all autolinks that are configured for a repository.

\n

Information about autolinks are only available to repository administrators.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -469302,7 +469295,6 @@ } ], "previews": [], - "descriptionHTML": "

This returns a single autolink reference by ID that was configured for the given repository.

\n

Information about autolinks are only available to repository administrators.

", "statusCodes": [ { "httpStatusCode": "200", @@ -469312,7 +469304,8 @@ "httpStatusCode": "404", "description": "

Resource not found

" } - ] + ], + "descriptionHTML": "

This returns a single autolink reference by ID that was configured for the given repository.

\n

Information about autolinks are only available to repository administrators.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -489945,7 +489938,6 @@ } ], "previews": [], - "descriptionHTML": "

Redeliver a webhook delivery for a webhook configured in a repository.

", "statusCodes": [ { "httpStatusCode": "202", @@ -489959,7 +489951,8 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" } - ] + ], + "descriptionHTML": "

Redeliver a webhook delivery for a webhook configured in a repository.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -490105,7 +490098,6 @@ } ], "previews": [], - "descriptionHTML": "

This will trigger the hook with the latest push to the current repository if the hook is subscribed to push events. If the hook is not subscribed to push events, the server will respond with 204 but no test POST will be generated.

\n

Note

\n

\nPreviously /repos/:owner/:repo/hooks/:hook_id/test

\n
", "statusCodes": [ { "httpStatusCode": "204", @@ -490115,7 +490107,8 @@ "httpStatusCode": "404", "description": "

Resource not found

" } - ] + ], + "descriptionHTML": "

This will trigger the hook with the latest push to the current repository if the hook is subscribed to push events. If the hook is not subscribed to push events, the server will respond with 204 but no test POST will be generated.

\n

Note

\n

\nPreviously /repos/:owner/:repo/hooks/:hook_id/test

\n
" } ] }, @@ -509971,13 +509964,13 @@ } ], "previews": [], - "descriptionHTML": "

Lists a team's repositories visible to the authenticated user.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/repos.

\n
", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Lists a team's repositories visible to the authenticated user.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/repos.

\n
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -511548,13 +511541,13 @@ } ], "previews": [], - "descriptionHTML": "

Lists the child teams of the team specified by {team_slug}.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/teams.

\n
", "statusCodes": [ { "httpStatusCode": "200", "description": "

if child teams exist

" } - ] + ], + "descriptionHTML": "

Lists the child teams of the team specified by {team_slug}.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/teams.

\n
" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -522778,13 +522771,13 @@ } ], "previews": [], - "descriptionHTML": "

Creates a new discussion post on a team's page.

\n

This endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\" and \"Best practices for using the REST API.\"

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route POST /organizations/{org_id}/team/{team_id}/discussions.

\n
\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ] + ], + "descriptionHTML": "

Creates a new discussion post on a team's page.

\n

This endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\" and \"Best practices for using the REST API.\"

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route POST /organizations/{org_id}/team/{team_id}/discussions.

\n
\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -526020,13 +526013,13 @@ } ], "previews": [], - "descriptionHTML": "

Displays information about the specific group's usage. Provides a list of the group's external members as well as a list of teams that this group is connected to.

\n

You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see \"GitHub's products\" in the GitHub Help documentation.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ] + ], + "descriptionHTML": "

Displays information about the specific group's usage. Provides a list of the group's external members as well as a list of teams that this group is connected to.

\n

You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see \"GitHub's products\" in the GitHub Help documentation.

" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", diff --git a/src/rest/data/ghes-3.15-2022-11-28/schema.json b/src/rest/data/ghes-3.15-2022-11-28/schema.json index 5b03f54f6437..8e6b2d61fc6a 100644 --- a/src/rest/data/ghes-3.15-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.15-2022-11-28/schema.json @@ -264,13 +264,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists all artifacts for a repository.

\n

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists all artifacts for a repository.

\n

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -479,13 +479,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets a specific artifact for a workflow run.

\n

Anyone with read access to the repository can use this endpoint.

\n

If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets a specific artifact for a workflow run.

\n

Anyone with read access to the repository can use this endpoint.

\n

If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -957,7 +957,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1033,7 +1033,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1126,7 +1126,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1228,13 +1228,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets the total GitHub Actions cache usage for an organization.\nThe data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.

\n

OAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets the total GitHub Actions cache usage for an organization.\nThe data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.

\n

OAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -1364,13 +1364,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists repositories and their GitHub Actions cache usage for an organization.\nThe data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.

\n

OAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists repositories and their GitHub Actions cache usage for an organization.\nThe data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.

\n

OAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -2088,13 +2088,13 @@ } ], "previews": [], + "descriptionHTML": "

Deletes a GitHub Actions cache for a repository, using a cache ID.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Deletes a GitHub Actions cache for a repository, using a cache ID.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] } ], "oidc": [ @@ -2555,13 +2555,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise.

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise.

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -2901,13 +2901,13 @@ } ], "previews": [], + "descriptionHTML": "

Replaces the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Replaces the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -3100,13 +3100,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets the selected actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets the selected actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -3254,13 +3254,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets the default workflow permissions granted to the GITHUB_TOKEN when running workflows in an enterprise,\nas well as whether GitHub Actions can submit approving pull request reviews. For more information, see\n\"Enforcing a policy for workflow permissions in your enterprise.\"

\n

OAuth tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

Success response

" } - ], - "descriptionHTML": "

Gets the default workflow permissions granted to the GITHUB_TOKEN when running workflows in an enterprise,\nas well as whether GitHub Actions can submit approving pull request reviews. For more information, see\n\"Enforcing a policy for workflow permissions in your enterprise.\"

\n

OAuth tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -4668,13 +4668,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists the selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -5032,13 +5032,13 @@ } ], "previews": [], + "descriptionHTML": "

Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

\n

If the organization belongs to an enterprise that has selected actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings.

\n

To use the patterns_allowed setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the patterns_allowed setting only applies to public repositories in the organization.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

\n

If the organization belongs to an enterprise that has selected actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings.

\n

To use the patterns_allowed setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the patterns_allowed setting only applies to public repositories in the organization.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -5287,13 +5287,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions allowed to run in the repository.

\n

You must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the administration repository permission to use this API.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions allowed to run in the repository.

\n

You must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the administration repository permission to use this API.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -5543,13 +5543,13 @@ } ], "previews": [], + "descriptionHTML": "

Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository.\nThis endpoint only applies to internal and private repositories.\nFor more information, see \"Allowing access to components in a private repository\" and\n\"Allowing access to components in an internal repository.\"

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Sets the level of access that workflows outside of the repository have to actions and reusable workflows in the repository.\nThis endpoint only applies to internal and private repositories.\nFor more information, see \"Allowing access to components in a private repository\" and\n\"Allowing access to components in an internal repository.\"

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -5728,13 +5728,13 @@ } ], "previews": [], + "descriptionHTML": "

Sets the actions that are allowed in a repository. To use this endpoint, the repository permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for a repository.\"

\n

If the repository belongs to an organization or enterprise that has selected actions set at the organization or enterprise levels, then you cannot override any of the allowed actions settings.

\n

To use the patterns_allowed setting for private repositories, the repository must belong to an enterprise. If the repository does not belong to an enterprise, then the patterns_allowed setting only applies to public repositories.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Sets the actions that are allowed in a repository. To use this endpoint, the repository permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for a repository.\"

\n

If the repository belongs to an organization or enterprise that has selected actions set at the organization or enterprise levels, then you cannot override any of the allowed actions settings.

\n

To use the patterns_allowed setting for private repositories, the repository must belong to an enterprise. If the repository does not belong to an enterprise, then the patterns_allowed setting only applies to public repositories.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -8438,13 +8438,13 @@ } ], "previews": [], + "descriptionHTML": "

Deletes a secret in a repository using the secret name.

\n

Authenticated users must have collaborator access to a repository to create, update, or read secrets.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Deletes a secret in a repository using the secret name.

\n

Authenticated users must have collaborator access to a repository to create, update, or read secrets.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -8833,13 +8833,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets a single environment secret without revealing its encrypted value.

\n

Authenticated users must have collaborator access to a repository to create, update, or read secrets.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets a single environment secret without revealing its encrypted value.

\n

Authenticated users must have collaborator access to a repository to create, update, or read secrets.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -10007,13 +10007,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists the organizations with access to a self-hosted runner group.

\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists the organizations with access to a self-hosted runner group.

\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -10676,13 +10676,13 @@ } ], "previews": [], + "descriptionHTML": "

Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.

\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.

\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -12642,13 +12642,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists the repositories with access to a self-hosted runner group configured in an organization.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists the repositories with access to a self-hosted runner group configured in an organization.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -13267,13 +13267,13 @@ } ], "previews": [], + "descriptionHTML": "

Adds a self-hosted runner to a runner group configured in an organization.

\n

OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Adds a self-hosted runner to a runner group configured in an organization.

\n

OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -14998,13 +14998,13 @@ } ], "previews": [], + "descriptionHTML": "

Returns a token that you can pass to the config script. The token expires after one hour.

\n

Example using registration token:

\n

Configure your self-hosted runner, replacing TOKEN with the registration token provided by this endpoint.

\n
./config.sh --url https://github.com/enterprises/octo-enterprise --token TOKEN\n
\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ], - "descriptionHTML": "

Returns a token that you can pass to the config script. The token expires after one hour.

\n

Example using registration token:

\n

Configure your self-hosted runner, replacing TOKEN with the registration token provided by this endpoint.

\n
./config.sh --url https://github.com/enterprises/octo-enterprise --token TOKEN\n
\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -16058,13 +16058,13 @@ } ], "previews": [], + "descriptionHTML": "

Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.

\n

Example using remove token:

\n

To remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.

\n
./config.sh remove --token TOKEN\n
\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ], - "descriptionHTML": "

Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.

\n

Example using remove token:

\n

To remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.

\n
./config.sh remove --token TOKEN\n
\n

OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -20964,13 +20964,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists all self-hosted runners configured in a repository.

\n

Authenticated users must have admin access to the repository to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists all self-hosted runners configured in a repository.

\n

Authenticated users must have admin access to the repository to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -23502,13 +23502,13 @@ } ], "previews": [], + "descriptionHTML": "

Returns a token that you can pass to the config script to remove a self-hosted runner from an repository. The token expires after one hour.

\n

For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization:

\n
./config.sh remove --token TOKEN\n
\n

Authenticated users must have admin access to the repository to use this endpoint.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ], - "descriptionHTML": "

Returns a token that you can pass to the config script to remove a self-hosted runner from an repository. The token expires after one hour.

\n

For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization:

\n
./config.sh remove --token TOKEN\n
\n

Authenticated users must have admin access to the repository to use this endpoint.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -24958,13 +24958,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets a specific variable in an organization.

\n

The authenticated user must have collaborator access to a repository to create, update, or read variables.

\n

OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets a specific variable in an organization.

\n

The authenticated user must have collaborator access to a repository to create, update, or read variables.

\n

OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -26896,13 +26896,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets a specific variable in a repository.

\n

The authenticated user must have collaborator access to the repository to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets a specific variable in a repository.

\n

The authenticated user must have collaborator access to the repository to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -27651,13 +27651,13 @@ } ], "previews": [], + "descriptionHTML": "

Deletes an environment variable using the variable name.

\n

Authenticated users must have collaborator access to a repository to create, update, or read variables.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Deletes an environment variable using the variable name.

\n

Authenticated users must have collaborator access to a repository to create, update, or read variables.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] } ], "workflow-jobs": [ @@ -35039,13 +35039,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets a specific workflow run.

\n

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets a specific workflow run.

\n

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -40351,13 +40351,13 @@ } ], "previews": [], + "descriptionHTML": "

Re-runs your workflow run using its id.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ], - "descriptionHTML": "

Re-runs your workflow run using its id.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -43824,13 +43824,13 @@ } ], "previews": [], + "descriptionHTML": "

Disables a workflow and sets the state of the workflow to disabled_manually. You can replace workflow_id with the workflow file name. For example, you could use main.yaml.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Disables a workflow and sets the state of the workflow to disabled_manually. You can replace workflow_id with the workflow file name. For example, you could use main.yaml.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -43927,13 +43927,13 @@ } ], "previews": [], + "descriptionHTML": "

You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace workflow_id with the workflow file name. For example, you could use main.yaml.

\n

You must configure your GitHub Actions workflow to run when the workflow_dispatch webhook event occurs. The inputs are configured in the workflow file. For more information about how to configure the workflow_dispatch event in the workflow file, see \"Events that trigger workflows.\"

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

You can use this endpoint to manually trigger a GitHub Actions workflow run. You can replace workflow_id with the workflow file name. For example, you could use main.yaml.

\n

You must configure your GitHub Actions workflow to run when the workflow_dispatch webhook event occurs. The inputs are configured in the workflow file. For more information about how to configure the workflow_dispatch event in the workflow file, see \"Events that trigger workflows.\"

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -44008,13 +44008,13 @@ } ], "previews": [], + "descriptionHTML": "

Enables a workflow and sets the state of the workflow to active. You can replace workflow_id with the workflow file name. For example, you could use main.yaml.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Enables a workflow and sets the state of the workflow to active. You can replace workflow_id with the workflow file name. For example, you could use main.yaml.

\n

OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] } ] }, @@ -99119,6 +99119,7 @@ } ], "previews": [], + "descriptionHTML": "

Note

\n

\nThe :app_slug is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., https://github.com/settings/apps/:app_slug).

\n
", "statusCodes": [ { "httpStatusCode": "200", @@ -99132,8 +99133,7 @@ "httpStatusCode": "404", "description": "

Resource not found

" } - ], - "descriptionHTML": "

Note

\n

\nThe :app_slug is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., https://github.com/settings/apps/:app_slug).

\n
" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -103605,13 +103605,13 @@ } ], "previews": [], + "descriptionHTML": "

Revokes the installation token you're using to authenticate as an installation and access this endpoint.

\n

Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the \"Create an installation access token for an app\" endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Revokes the installation token you're using to authenticate as an installation and access this endpoint.

\n

Once an installation token is revoked, the token is invalidated and cannot be used. Other endpoints that require the revoked installation token must have a new installation token to work. You can create a new token using the \"Create an installation access token for an app\" endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -128187,6 +128187,7 @@ } ], "previews": [], + "descriptionHTML": "

Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see GitHub's products in the GitHub Help documentation.

\n

When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of true indicates you must sign commits on this branch. For more information, see Signing commits with GPG in GitHub Help.

\n

Note

\n

\nYou must enable branch protection to require signed commits.

\n
", "statusCodes": [ { "httpStatusCode": "200", @@ -128196,8 +128197,7 @@ "httpStatusCode": "404", "description": "

Resource not found

" } - ], - "descriptionHTML": "

Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see GitHub's products in the GitHub Help documentation.

\n

When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of true indicates you must sign commits on this branch. For more information, see Signing commits with GPG in GitHub Help.

\n

Note

\n

\nYou must enable branch protection to require signed commits.

\n
" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -130307,6 +130307,7 @@ } ], "previews": [], + "descriptionHTML": "

Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see GitHub's products in the GitHub Help documentation.

\n

Lists the GitHub Apps that have push access to this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch.

", "statusCodes": [ { "httpStatusCode": "200", @@ -130316,8 +130317,7 @@ "httpStatusCode": "404", "description": "

Resource not found

" } - ], - "descriptionHTML": "

Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see GitHub's products in the GitHub Help documentation.

\n

Lists the GitHub Apps that have push access to this branch. Only GitHub Apps that are installed on the repository and that have been granted write access to the repository contents can be added as authorized actors on a protected branch.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -148589,13 +148589,13 @@ } ], "previews": [], + "descriptionHTML": "

Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually Create a check suite.\nYou must have admin permissions in the repository to set preferences for check suites.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Changes the default automatic flow when creating check suites. By default, a check suite is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually Create a check suite.\nYou must have admin permissions in the repository to set preferences for check suites.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -157544,12 +157544,6 @@ "name": "dismissed_comment", "in": "body", "description": "

The dismissal comment associated with the dismissal of the alert.

" - }, - { - "type": "boolean", - "name": "create_request", - "in": "body", - "description": "

If true, attempt to create an alert dismissal request.

" } ], "progAccess": { @@ -157572,8 +157566,7 @@ "bodyParameters": { "state": "dismissed", "dismissed_reason": "false positive", - "dismissed_comment": "This alert is not actually correct, because there's a sanitizer included in the library.", - "create_request": true + "dismissed_comment": "This alert is not actually correct, because there's a sanitizer included in the library." }, "parameters": { "owner": "OWNER", @@ -161963,13 +161956,13 @@ } ], "previews": [], + "descriptionHTML": "

Attach a code security configuration to a set of repositories. If the repositories specified are already attached to a configuration, they will be re-attached to the provided configuration.

\n

If insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled.

\n

The authenticated user must be an administrator or security manager for the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the write:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "202", "description": "

Accepted

" } - ], - "descriptionHTML": "

Attach a code security configuration to a set of repositories. If the repositories specified are already attached to a configuration, they will be re-attached to the provided configuration.

\n

If insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled.

\n

The authenticated user must be an administrator or security manager for the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the write:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -167449,13 +167442,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -184488,6 +184481,7 @@ } ], "previews": [], + "descriptionHTML": "

Lists Dependabot alerts for repositories that are owned by the specified enterprise.

\n

The authenticated user must be a member of the enterprise to use this endpoint.

\n

Alerts are only returned for organizations in the enterprise for which you are an organization owner or a security manager. For more information about security managers, see \"Managing security managers in your organization.\"

\n

OAuth app tokens and personal access tokens (classic) need the repo or security_events scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", @@ -184509,8 +184503,7 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" } - ], - "descriptionHTML": "

Lists Dependabot alerts for repositories that are owned by the specified enterprise.

\n

The authenticated user must be a member of the enterprise to use this endpoint.

\n

Alerts are only returned for organizations in the enterprise for which you are an organization owner or a security manager. For more information about security managers, see \"Managing security managers in your organization.\"

\n

OAuth app tokens and personal access tokens (classic) need the repo or security_events scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -189663,13 +189656,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists all secrets available in an organization without revealing their\nencrypted values.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists all secrets available in an organization without revealing their\nencrypted values.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -198331,13 +198324,13 @@ } ], "previews": [], + "descriptionHTML": "

Note

\n

\nTo get information about name patterns that branches must match in order to deploy to this environment, see \"Get a deployment branch policy.\"

\n
\n

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Note

\n

\nTo get information about name patterns that branches must match in order to deploy to this environment, see \"Get a deployment branch policy.\"

\n
\n

Anyone with read access to the repository can use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -205136,13 +205129,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -205466,13 +205459,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -205977,7 +205970,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -206355,7 +206348,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -209530,6 +209523,7 @@ } ], "previews": [], + "descriptionHTML": "

Check the status of the license that is currently set for the enterprise.

", "statusCodes": [ { "httpStatusCode": "200", @@ -209543,8 +209537,7 @@ "httpStatusCode": "500", "description": "

Internal error

" } - ], - "descriptionHTML": "

Check the status of the license that is currently set for the enterprise.

" + ] }, { "serverUrl": "http(s)://HOSTNAME", @@ -211149,13 +211142,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -211351,13 +211344,13 @@ } ], "previews": [], + "descriptionHTML": "

Removes any overrides for this hook at the org level for this org.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Removes any overrides for this hook at the org level for this org.

" + ] } ], "orgs": [ @@ -211787,13 +211780,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -213704,13 +213697,13 @@ } ], "previews": [], + "descriptionHTML": "

Deletes any overridden enforcement on this repository for the specified hook.

\n

Responds with effective values inherited from owner and/or global level.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

Responds with effective values inherited from owner and/or global level.

" } - ], - "descriptionHTML": "

Deletes any overridden enforcement on this repository for the specified hook.

\n

Responds with effective values inherited from owner and/or global level.

" + ] } ], "scim": [ @@ -213796,7 +213789,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -214156,7 +214149,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -214449,7 +214442,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -214766,7 +214759,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -215306,7 +215299,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -215819,7 +215812,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -215943,7 +215936,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -216484,7 +216477,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -217201,7 +217194,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -217702,7 +217695,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -218140,7 +218133,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -219148,7 +219141,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -222987,13 +222980,13 @@ } ], "previews": [], + "descriptionHTML": "

You can demote any user account except your own.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

You can demote any user account except your own.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -269183,13 +269176,13 @@ } ], "previews": [], + "descriptionHTML": "

Removes one or more assignees from an issue.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Removes one or more assignees from an issue.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -296491,13 +296484,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists labels for issues in a milestone.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists labels for issues in a milestone.

" + ] } ], "milestones": [ @@ -298348,13 +298341,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -316264,6 +316257,7 @@ } ], "previews": [], + "descriptionHTML": "

Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as issues:read or pull_requests:read.

", "statusCodes": [ { "httpStatusCode": "200", @@ -316273,8 +316267,7 @@ "httpStatusCode": "304", "description": "

Not modified

" } - ], - "descriptionHTML": "

Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as issues:read or pull_requests:read.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -320732,6 +320725,7 @@ } ], "previews": [], + "descriptionHTML": "

Initiates the generation of a migration archive.

\n

Before you can use this endpoint, you must configure a blob storage provider in the \"Migrations\" section in the Management Console. For more details, see \"Migrating repositories from GitHub Enterprise Server to GitHub Enterprise Cloud.\"

", "statusCodes": [ { "httpStatusCode": "201", @@ -320745,8 +320739,7 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" } - ], - "descriptionHTML": "

Initiates the generation of a migration archive.

\n

Before you can use this endpoint, you must configure a blob storage provider in the \"Migrations\" section in the Management Console. For more details, see \"Migrating repositories from GitHub Enterprise Server to GitHub Enterprise Cloud.\"

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -327822,6 +327815,7 @@ } ], "previews": [], + "descriptionHTML": "

Warning

\n

\nClosing down notice: GitHub Enterprise Server will discontinue the OAuth Authorizations API, which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our web application flow. The OAuth Authorizations API will be removed on November 13, 2020. For more information, including scheduled brownouts, see the blog post.

\n
\n

You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the list your authorizations API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on the application authorizations settings screen within GitHub. The scopes returned are the union of scopes authorized for the application. For example, if an application has one token with repo scope and another token with user scope, the grant will return [\"repo\", \"user\"].

", "statusCodes": [ { "httpStatusCode": "200", @@ -327843,8 +327837,7 @@ "httpStatusCode": "404", "description": "

Resource not found

" } - ], - "descriptionHTML": "

Warning

\n

\nClosing down notice: GitHub Enterprise Server will discontinue the OAuth Authorizations API, which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our web application flow. The OAuth Authorizations API will be removed on November 13, 2020. For more information, including scheduled brownouts, see the blog post.

\n
\n

You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the list your authorizations API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on the application authorizations settings screen within GitHub. The scopes returned are the union of scopes authorized for the application. For example, if an application has one token with repo scope and another token with user scope, the grant will return [\"repo\", \"user\"].

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -341791,13 +341784,13 @@ } ], "previews": [], + "descriptionHTML": "

Warning

\n

\nClosing down notice: This operation is closing down and will be removed in the future. Use the \"List custom repository roles\" endpoint instead.

\n
\n

List the custom repository roles available in this organization. For more information on custom repository roles, see \"About custom repository roles.\"

\n

The authenticated user must be administrator of the organization or of a repository of the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org or repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

Response - list of custom role names

" } - ], - "descriptionHTML": "

Warning

\n

\nClosing down notice: This operation is closing down and will be removed in the future. Use the \"List custom repository roles\" endpoint instead.

\n
\n

List the custom repository roles available in this organization. For more information on custom repository roles, see \"About custom repository roles.\"

\n

The authenticated user must be administrator of the organization or of a repository of the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org or repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -347607,13 +347600,13 @@ } ], "previews": [], + "descriptionHTML": "

Removes all assigned organization roles from a team. For more information on organization roles, see \"Using organization roles.\"

\n

The authenticated user must be an administrator for the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Removes all assigned organization roles from a team. For more information on organization roles, see \"Using organization roles.\"

\n

The authenticated user must be an administrator for the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -347763,13 +347756,13 @@ } ], "previews": [], + "descriptionHTML": "

Removes an organization role from a team. For more information on organization roles, see \"Using organization roles.\"

\n

The authenticated user must be an administrator for the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Removes an organization role from a team. For more information on organization roles, see \"Using organization roles.\"

\n

The authenticated user must be an administrator for the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -349116,6 +349109,7 @@ } ], "previews": [], + "descriptionHTML": "

Lists the teams that are assigned to an organization role. For more information on organization roles, see \"Using organization roles.\"

\n

To use this endpoint, you must be an administrator for the organization.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", @@ -349129,8 +349123,7 @@ "httpStatusCode": "422", "description": "

Response if the organization roles feature is not enabled or validation failed.

" } - ], - "descriptionHTML": "

Lists the teams that are assigned to an organization role. For more information on organization roles, see \"Using organization roles.\"

\n

To use this endpoint, you must be an administrator for the organization.

\n

OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -361373,13 +361366,13 @@ } ], "previews": [], + "descriptionHTML": "

Adds a team as a security manager for an organization. For more information, see \"Managing security for an organization for an organization.\"

\n

The authenticated user must be an administrator for the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the write:org scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Adds a team as a security manager for an organization. For more information, see \"Managing security for an organization for an organization.\"

\n

The authenticated user must be an administrator for the organization to use this endpoint.

\n

OAuth app tokens and personal access tokens (classic) need the write:org scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -378400,13 +378393,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists builts of a GitHub Enterprise Server Pages site.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists builts of a GitHub Enterprise Server Pages site.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -379151,13 +379144,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets information about a GitHub Enterprise Server Pages build.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets information about a GitHub Enterprise Server Pages build.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -408100,13 +408093,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists review comments for all pull requests in a repository. By default,\nreview comments are in ascending order by ID.

\n

This endpoint supports the following custom media types. For more information, see \"Media types.\"

\n
    \n
  • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
  • \n
  • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
  • \n
  • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
  • \n
  • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
  • \n
", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists review comments for all pull requests in a repository. By default,\nreview comments are in ascending order by ID.

\n

This endpoint supports the following custom media types. For more information, see \"Media types.\"

\n
    \n
  • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
  • \n
  • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
  • \n
  • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
  • \n
  • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
  • \n
" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -409401,13 +409394,13 @@ } ], "previews": [], + "descriptionHTML": "

Edits the content of a specified review comment.

\n

This endpoint supports the following custom media types. For more information, see \"Media types.\"

\n
    \n
  • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
  • \n
  • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
  • \n
  • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
  • \n
  • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
  • \n
", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Edits the content of a specified review comment.

\n

This endpoint supports the following custom media types. For more information, see \"Media types.\"

\n
    \n
  • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
  • \n
  • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
  • \n
  • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
  • \n
  • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
  • \n
" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -410910,6 +410903,7 @@ } ], "previews": [], + "descriptionHTML": "

Creates a review comment on the diff of a specified pull request. To add a regular comment to a pull request timeline, see \"Create an issue comment.\"

\n

If your comment applies to more than one line in the pull request diff, you should use the parameters line, side, and optionally start_line and start_side in your request.

\n

The position parameter is closing down. If you use position, the line, side, start_line, and start_side parameters are not required.

\n

This endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\"\nand \"Best practices for using the REST API.\"

\n

This endpoint supports the following custom media types. For more information, see \"Media types.\"

\n
    \n
  • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
  • \n
  • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
  • \n
  • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
  • \n
  • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
  • \n
", "statusCodes": [ { "httpStatusCode": "201", @@ -410923,8 +410917,7 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" } - ], - "descriptionHTML": "

Creates a review comment on the diff of a specified pull request. To add a regular comment to a pull request timeline, see \"Create an issue comment.\"

\n

If your comment applies to more than one line in the pull request diff, you should use the parameters line, side, and optionally start_line and start_side in your request.

\n

The position parameter is closing down. If you use position, the line, side, start_line, and start_side parameters are not required.

\n

This endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\"\nand \"Best practices for using the REST API.\"

\n

This endpoint supports the following custom media types. For more information, see \"Media types.\"

\n
    \n
  • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
  • \n
  • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
  • \n
  • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
  • \n
  • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
  • \n
" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -422065,13 +422058,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists all reviews for a specified pull request. The list of reviews returns in chronological order.

\n

This endpoint supports the following custom media types. For more information, see \"Media types.\"

\n
    \n
  • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
  • \n
  • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
  • \n
  • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
  • \n
  • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
  • \n
", "statusCodes": [ { "httpStatusCode": "200", "description": "

The list of reviews returns in chronological order.

" } - ], - "descriptionHTML": "

Lists all reviews for a specified pull request. The list of reviews returns in chronological order.

\n

This endpoint supports the following custom media types. For more information, see \"Media types.\"

\n
    \n
  • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
  • \n
  • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
  • \n
  • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
  • \n
  • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
  • \n
" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -430227,13 +430220,13 @@ } ], "previews": [], + "descriptionHTML": "

Note

\n

\nYou can also specify a repository by repository_id using the route DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id.

\n
\n

Delete a reaction to an issue comment.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Note

\n

\nYou can also specify a repository by repository_id using the route DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id.

\n
\n

Delete a reaction to an issue comment.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -434519,13 +434512,13 @@ } ], "previews": [], + "descriptionHTML": "

Warning

\n

\nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new List reactions for a team discussion endpoint.

\n
\n

List the reactions to a team discussion.

\n

OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Warning

\n

\nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new List reactions for a team discussion endpoint.

\n
\n

List the reactions to a team discussion.

\n

OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -440916,13 +440909,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "https://HOSTNAME/api/uploads", @@ -457324,6 +457317,7 @@ } ], "previews": [], + "descriptionHTML": "

Lists a detailed history of changes to a repository, such as pushes, merges, force pushes, and branch changes, and associates these changes with commits and users.

\n

For more information about viewing repository activity,\nsee \"Viewing activity and data for your repository.\"

", "statusCodes": [ { "httpStatusCode": "200", @@ -457333,8 +457327,7 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" } - ], - "descriptionHTML": "

Lists a detailed history of changes to a repository, such as pushes, merges, force pushes, and branch changes, and associates these changes with commits and users.

\n

For more information about viewing repository activity,\nsee \"Viewing activity and data for your repository.\"

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -457995,13 +457988,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -473123,13 +473116,13 @@ } ], "previews": [], + "descriptionHTML": "

Gets all autolinks that are configured for a repository.

\n

Information about autolinks are only available to repository administrators.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Gets all autolinks that are configured for a repository.

\n

Information about autolinks are only available to repository administrators.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -483447,13 +483440,13 @@ } ], "previews": [], + "descriptionHTML": "

Disables Git LFS for a repository.

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Disables Git LFS for a repository.

\n

OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

" + ] } ], "rule-suites": [ @@ -516014,13 +516007,13 @@ } ], "previews": [], + "descriptionHTML": "

To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a 422 Unprocessable Entity status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set Content-Length to zero when calling out to this endpoint. For more information, see \"HTTP method.\"

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}.

\n
\n

For more information about the permission levels, see \"Repository permission levels for an organization\".

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a 422 Unprocessable Entity status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set Content-Length to zero when calling out to this endpoint. For more information, see \"HTTP method.\"

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}.

\n
\n

For more information about the permission levels, see \"Repository permission levels for an organization\".

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -516404,13 +516397,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists the child teams of the team specified by {team_slug}.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/teams.

\n
", "statusCodes": [ { "httpStatusCode": "200", "description": "

if child teams exist

" } - ], - "descriptionHTML": "

Lists the child teams of the team specified by {team_slug}.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/teams.

\n
" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -524295,13 +524288,13 @@ } ], "previews": [], + "descriptionHTML": "

Get a specific comment on a team discussion.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}.

\n
\n

OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Get a specific comment on a team discussion.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}.

\n
\n

OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -524747,13 +524740,13 @@ } ], "previews": [], + "descriptionHTML": "

Edits the body text of a discussion comment.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}.

\n
\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Edits the body text of a discussion comment.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route PATCH /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}.

\n
\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -527649,13 +527642,13 @@ } ], "previews": [], + "descriptionHTML": "

Creates a new discussion post on a team's page.

\n

This endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\" and \"Best practices for using the REST API.\"

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route POST /organizations/{org_id}/team/{team_id}/discussions.

\n
\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "201", "description": "

Created

" } - ], - "descriptionHTML": "

Creates a new discussion post on a team's page.

\n

This endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\" and \"Best practices for using the REST API.\"

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route POST /organizations/{org_id}/team/{team_id}/discussions.

\n
\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -528123,13 +528116,13 @@ } ], "previews": [], + "descriptionHTML": "

Get a specific discussion on a team's page.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}.

\n
\n

OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Get a specific discussion on a team's page.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}.

\n
\n

OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -528678,13 +528671,13 @@ } ], "previews": [], + "descriptionHTML": "

Delete a discussion from a team's page.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}.

\n
\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

", "statusCodes": [ { "httpStatusCode": "204", "description": "

No Content

" } - ], - "descriptionHTML": "

Delete a discussion from a team's page.

\n

Note

\n

\nYou can also specify a team by org_id and team_id using the route DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}.

\n
\n

OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -531039,13 +531032,13 @@ } ], "previews": [], + "descriptionHTML": "

Lists external groups available in an organization. You can query the groups using the display_name parameter, only groups with a group_name containing the text provided in the display_name parameter will be returned. You can also limit your page results using the per_page parameter. GitHub Enterprise Server generates a url-encoded page token using a cursor value for where the next page begins. For more information on cursor pagination, see \"Offset and Cursor Pagination explained.\"

\n

You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see \"GitHub's products\" in the GitHub Help documentation.

", "statusCodes": [ { "httpStatusCode": "200", "description": "

OK

" } - ], - "descriptionHTML": "

Lists external groups available in an organization. You can query the groups using the display_name parameter, only groups with a group_name containing the text provided in the display_name parameter will be returned. You can also limit your page results using the per_page parameter. GitHub Enterprise Server generates a url-encoded page token using a cursor value for where the next page begins. For more information on cursor pagination, see \"Offset and Cursor Pagination explained.\"

\n

You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see \"GitHub's products\" in the GitHub Help documentation.

" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", diff --git a/src/rest/data/ghes-3.16-2022-11-28/schema.json b/src/rest/data/ghes-3.16-2022-11-28/schema.json index 73eff2e6a7e9..48a9084232f3 100644 --- a/src/rest/data/ghes-3.16-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.16-2022-11-28/schema.json @@ -957,7 +957,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1033,7 +1033,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1126,7 +1126,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -157723,12 +157723,6 @@ "name": "dismissed_comment", "in": "body", "description": "

The dismissal comment associated with the dismissal of the alert.

" - }, - { - "type": "boolean", - "name": "create_request", - "in": "body", - "description": "

If true, attempt to create an alert dismissal request.

" } ], "progAccess": { @@ -157751,8 +157745,7 @@ "bodyParameters": { "state": "dismissed", "dismissed_reason": "false positive", - "dismissed_comment": "This alert is not actually correct, because there's a sanitizer included in the library.", - "create_request": true + "dismissed_comment": "This alert is not actually correct, because there's a sanitizer included in the library." }, "parameters": { "owner": "OWNER", @@ -209855,7 +209848,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -211526,7 +211519,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -218980,7 +218973,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -219340,7 +219333,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -219633,7 +219626,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -219950,7 +219943,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -220490,7 +220483,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -221003,7 +220996,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -221127,7 +221120,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -221668,7 +221661,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -222385,7 +222378,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -222886,7 +222879,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -223324,7 +223317,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -224332,7 +224325,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, diff --git a/src/rest/data/ghes-3.17-2022-11-28/schema.json b/src/rest/data/ghes-3.17-2022-11-28/schema.json index 7f10423c6533..2ebaf3a875ca 100644 --- a/src/rest/data/ghes-3.17-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.17-2022-11-28/schema.json @@ -957,7 +957,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1033,7 +1033,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -1126,7 +1126,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -158018,12 +158018,6 @@ "name": "dismissed_comment", "in": "body", "description": "

The dismissal comment associated with the dismissal of the alert.

" - }, - { - "type": "boolean", - "name": "create_request", - "in": "body", - "description": "

If true, attempt to create an alert dismissal request.

" } ], "progAccess": { @@ -158046,8 +158040,7 @@ "bodyParameters": { "state": "dismissed", "dismissed_reason": "false positive", - "dismissed_comment": "This alert is not actually correct, because there's a sanitizer included in the library.", - "create_request": true + "dismissed_comment": "This alert is not actually correct, because there's a sanitizer included in the library." }, "parameters": { "owner": "OWNER", @@ -210644,7 +210637,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "read" + "\"Enterprise administration\" enterprise permissions": "read" } ] }, @@ -212328,7 +212321,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise administration\" business permissions": "write" + "\"Enterprise administration\" enterprise permissions": "write" } ] }, @@ -219782,7 +219775,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -220142,7 +220135,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -220435,7 +220428,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -220752,7 +220745,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -221292,7 +221285,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -221805,7 +221798,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -221929,7 +221922,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -222470,7 +222463,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -223187,7 +223180,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "read" + "\"Enterprise SCIM\" enterprise permissions": "read" } ] }, @@ -223688,7 +223681,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -224126,7 +224119,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, @@ -225134,7 +225127,7 @@ "fineGrainedPat": true, "permissions": [ { - "\"Enterprise SCIM\" business permissions": "write" + "\"Enterprise SCIM\" enterprise permissions": "write" } ] }, diff --git a/src/rest/lib/config.json b/src/rest/lib/config.json index 994bbd9b8044..2a20f0a9855c 100644 --- a/src/rest/lib/config.json +++ b/src/rest/lib/config.json @@ -47,5 +47,5 @@ ] } }, - "sha": "3ae8ad33b4276583395c1b28852650f329018927" + "sha": "042ebdf85f1f5234751ac9603b977c9929e72c66" } \ No newline at end of file diff --git a/src/search/components/input/SearchOverlay.tsx b/src/search/components/input/SearchOverlay.tsx index c2e4d2e6d202..177a6f7a8205 100644 --- a/src/search/components/input/SearchOverlay.tsx +++ b/src/search/components/input/SearchOverlay.tsx @@ -805,7 +805,7 @@ export function SearchOverlay({ window.open('https://github.com/github/docs-team/discussions/5172', '_blank') } else { // public discussion for feedback - window.open('https://github.com/orgs/community/discussions/158488', '_blank') + window.open('https://github.com/orgs/community/discussions/164214', '_blank') } }} as="button" diff --git a/src/webhooks/lib/config.json b/src/webhooks/lib/config.json index ee79d0900ceb..85e55a87ecc7 100644 --- a/src/webhooks/lib/config.json +++ b/src/webhooks/lib/config.json @@ -1,3 +1,3 @@ { - "sha": "3ae8ad33b4276583395c1b28852650f329018927" + "sha": "042ebdf85f1f5234751ac9603b977c9929e72c66" } \ No newline at end of file