diff --git a/content/billing/concepts/enterprise-billing/azure-devops-licenses.md b/content/billing/concepts/enterprise-billing/azure-devops-licenses.md new file mode 100644 index 000000000000..e930cec28916 --- /dev/null +++ b/content/billing/concepts/enterprise-billing/azure-devops-licenses.md @@ -0,0 +1,19 @@ +--- +title: Combined use of GitHub Enterprise and Azure DevOps +intro: '{% data variables.product.prodname_ghe_cloud %} customers can use Azure DevOps without additional costs.' +versions: + fpt: '*' + ghec: '*' +topics: + - Billing + - Enterprise + - Licensing +shortTitle: Azure DevOps licenses +contentType: concepts +--- + +{% data variables.product.prodname_ghe_cloud %} customers can use Azure DevOps without additional costs per user. For customers using Microsoft Entra, users can sign in with the same credentials on {% data variables.product.github %} and Azure DevOps. + +No additional setup is required. {% data variables.product.prodname_enterprise %} users are detected automatically when they sign in to Azure DevOps. See [User and permissions management](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/faq-user-and-permissions-management?view=azure-devops#github-enterprise) in the Microsoft Learn documentation. + +Combined use is not currently available with {% data variables.enterprise.data_residency %}, but this is planned as a future improvement. diff --git a/content/billing/concepts/enterprise-billing/combined-enterprise-use.md b/content/billing/concepts/enterprise-billing/combined-enterprise-use.md index d48a8997e69d..f01cc34c7c11 100644 --- a/content/billing/concepts/enterprise-billing/combined-enterprise-use.md +++ b/content/billing/concepts/enterprise-billing/combined-enterprise-use.md @@ -15,51 +15,56 @@ redirect_from: contentType: concepts --- - -{% data reusables.billing.usage-based-billing %} - ## About licensing for {% data variables.product.prodname_enterprise %} {% data reusables.enterprise.about-deployment-methods %} -{% data reusables.enterprise-licensing.unique-user-licensing-model %} To understand how {% data variables.product.company_short %} bills you for consumed {% ifversion enterprise-licensing-language %}licenses{% else %}licensed seats{% endif %}, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/about-per-user-pricing). For more about the price of {% data variables.product.prodname_enterprise %} licenses, see [Pricing](https://github.com/pricing) on the {% data variables.product.prodname_dotcom %} website. - -To ensure the same user isn't consuming more than one license for multiple enterprise deployments, you can synchronize license usage between your {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %} deployments. +{% data reusables.enterprise-licensing.unique-user-licensing-model %} -{% ifversion ghes %} +To use a {% data variables.product.prodname_ghe_server %} instance, you must upload a license file that {% data variables.product.company_short %} provides. See [AUTOTITLE](/billing/concepts/enterprise-billing/ghes-license-files). -{% data reusables.billing.license-type-overview %} -{% data reusables.billing.license-models %} +## Syncing licenses -{% endif %} +{% data reusables.enterprise-licensing.about-license-sync %} -In order to use a {% data variables.product.prodname_ghe_server %} instance, you must upload a license file that {% data variables.product.company_short %} provides when you purchase, renew, or add user licenses to {% data variables.product.prodname_enterprise %}. +## Usage-based and volume licensing -{% data variables.product.prodname_ghe_cloud %} customers can use Azure DevOps without additional per user charges. Access is available to customers using Microsoft Entra and users logging in with the same credentials in {% data variables.product.github %} and Azure DevOps. +There are two types of {% data variables.product.prodname_enterprise %} (GHE) licensing models, with different processes for enabling combined use of {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}. -There is no action required; {% data variables.product.prodname_enterprise %} users will be detected automatically when they log in to Azure DevOps. See [User and permissions management](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/faq-user-and-permissions-management?view=azure-devops#github-enterprise) in the Microsoft Learn documentation. +* **GHE (Usage-based, also called metered)**: A cloud-first license where users must first be assigned to a {% data variables.product.prodname_ghe_cloud %} organization. + * All Cloud users automatically receive a use right for {% data variables.product.prodname_ghe_server %}. + * Billing is based on the number of active users each month. + * Users can generate their own Server license, which covers the number of assigned Cloud seats at the time of generation and is valid for one year. + * Server-only users will be added to GHE (Metered) billing. These users are de-duplicated with email matching to avoid double billing. -Access is not yet available in [new data residency regions](https://github.blog/engineering/engineering-principles/github-enterprise-cloud-with-data-residency/) but will be coming in the future. +* **GHE (Volume/Subscription, also called GHE Unified)**: A bundled license for both {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}. + * One license covers both {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}, allowing users to work in either or both. + * Users can access both services via {% data variables.product.prodname_github_connect %}. + * This license requires manual setup and is provided by {% data variables.product.github %} Sales. -## About synchronization of license usage for {% data variables.product.prodname_enterprise %} - -{% data reusables.enterprise-licensing.about-license-sync %} For more information, see [AUTOTITLE](/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud). - -## About license files for {% data variables.product.prodname_enterprise %} - -When you purchase or renew {% data variables.product.prodname_enterprise %}, {% data variables.product.company_short %} provides a license file {% ifversion ghec %}for your deployments of {% data variables.product.prodname_ghe_server %}{% elsif ghes %}for {% data variables.location.product_location_enterprise %}{% endif %}. A license file has an expiration date and controls the number of people who can use {% data variables.location.product_location_enterprise %}. After you download and install {% data variables.product.prodname_ghe_server %}, you must upload the license file to unlock the application for you to use. +{% data reusables.billing.usage-based-billing %} -For more information about downloading your license file, see [AUTOTITLE](/billing/managing-your-license-for-github-enterprise/downloading-your-license-for-github-enterprise). +### Detailed comparison -For more information about uploading your license file, see {% ifversion ghec %}[AUTOTITLE](/enterprise-server@latest/billing/managing-your-license-for-github-enterprise/uploading-a-new-license-to-github-enterprise-server) in the {% data variables.product.prodname_ghe_server %} documentation.{% elsif ghes %}[AUTOTITLE](/billing/managing-your-license-for-github-enterprise/uploading-a-new-license-to-github-enterprise-server).{% endif %} +{% rowheaders %} -If your license expires, you won't be able to access {% data variables.product.prodname_ghe_server %} via a web browser or Git. If needed, you will be able to use command-line utilities to back up all your data. For more information, see {% ifversion ghec %}[Configuring backups on your appliance](/enterprise-server@latest/admin/guides/installation/configuring-backups-on-your-appliance) in the {% data variables.product.prodname_ghe_server %} documentation.{% elsif ghes %}[AUTOTITLE](/admin/configuration/configuring-your-enterprise/configuring-backups-on-your-appliance).{% endif %} +| License model | Usage-based | Volume or subscription | +|----------------------------------|-------------------------------------|-----------------------------------------------------------------------------------------------| +| **Cloud vs. Server** | Cloud-first, with a Server use right for Cloud users | 1 user license covers both Cloud and Server (hybrid, Cloud-only, or Server-only) | +| **Setup** | Self-service | Manual setup via {% data variables.product.github %} Sales | +| **Server license generation** | Users generate their own {% data variables.product.prodname_ghe_server %} license | Enterprise owners download their own {% data variables.product.prodname_ghe_server %} license | +| **License file scope** | Covers Cloud-assigned users at time of generation | Covers all purchased users for both Cloud and Server | +| **License expiration** | Expires in 12 months | Aligned with volume license term | +| **License key usage** | Limits max Server users | Covers all users in the volume subscription | +| **Required {% data variables.product.prodname_enterprise %} version** | {% data variables.product.prodname_enterprise %} 3.13+, with {% data variables.product.prodname_github_connect %} | No specific version required | +| **Billing model** | Invoiced for users not assigned on Cloud via {% data variables.product.prodname_github_connect %} | Fixed cost based on purchased volume | -If you have any questions about renewing your license, contact {% data variables.contact.contact_enterprise_sales %}. +{% endrowheaders %} ## Further reading +* [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/about-per-user-pricing) +* [Pricing](https://github.com/pricing) * [AUTOTITLE](/billing/managing-your-billing/about-billing-for-your-enterprise) -* The [People that consume a license](/billing/managing-the-plan-for-your-github-account/about-per-user-pricing#people-that-consume-a-license) section in "About per-user pricing" * [AUTOTITLE]({% ifversion fpt or ghec %}/enterprise-server@latest{% endif %}/admin/installation/setting-up-a-github-enterprise-server-instance) * The [{% data variables.product.prodname_enterprise %} Releases](https://enterprise.github.com/releases/) website diff --git a/content/billing/concepts/enterprise-billing/ghes-license-files.md b/content/billing/concepts/enterprise-billing/ghes-license-files.md new file mode 100644 index 000000000000..2d237a95089f --- /dev/null +++ b/content/billing/concepts/enterprise-billing/ghes-license-files.md @@ -0,0 +1,29 @@ +--- +title: License files for GitHub Enterprise Server +intro: 'To use {% data variables.product.prodname_ghe_server %}, you must upload a license file.' +versions: + fpt: '*' + ghec: '*' + ghes: '*' +topics: + - Billing + - Enterprise + - Licensing +shortTitle: GHES license files +contentType: concepts +--- + +## About license files + +In order to use a {% data variables.product.prodname_ghe_server %} instance, you must upload a license file that {% data variables.product.company_short %} provides when you purchase, renew, or add user licenses to {% data variables.product.prodname_enterprise %}. + +A license file has an expiration date and controls the number of people who can use {% data variables.location.product_location_enterprise %}. After you download and install {% data variables.product.prodname_ghe_server %}, you must upload the license file to unlock the application for you to use. + +If your license expires, you won't be able to access {% data variables.product.prodname_ghe_server %} via a web browser or Git. If needed, you will be able to use command-line utilities to back up all your data. + +## Next steps + +* To download your license file, see [AUTOTITLE](/billing/managing-your-license-for-github-enterprise/downloading-your-license-for-github-enterprise). +* To upload your license file to {% data variables.product.prodname_ghe_server %}, see {% ifversion fpt or ghec %}[AUTOTITLE](/enterprise-server@latest/billing/managing-your-license-for-github-enterprise/uploading-a-new-license-to-github-enterprise-server) in the {% data variables.product.prodname_ghe_server %} documentation.{% elsif ghes %}[AUTOTITLE](/billing/managing-your-license-for-github-enterprise/uploading-a-new-license-to-github-enterprise-server).{% endif %} +* To back up your {% data variables.product.prodname_ghe_server %} instance, see {% ifversion fpt or ghec %}[Configuring backups on your appliance](/enterprise-server@latest/admin/guides/installation/configuring-backups-on-your-appliance) in the {% data variables.product.prodname_ghe_server %} documentation.{% elsif ghes %}[AUTOTITLE](/admin/configuration/configuring-your-enterprise/configuring-backups-on-your-appliance).{% endif %} +* If you have questions about renewing your license, contact {% data variables.contact.contact_enterprise_sales %}. diff --git a/content/billing/concepts/enterprise-billing/index.md b/content/billing/concepts/enterprise-billing/index.md index 1001878f0e70..da7df7eb7f97 100644 --- a/content/billing/concepts/enterprise-billing/index.md +++ b/content/billing/concepts/enterprise-billing/index.md @@ -11,7 +11,9 @@ children: - /billing-for-enterprises - /usage-based-licenses - /combined-enterprise-use + - /ghes-license-files - /visual-studio-subs + - /azure-devops-licenses contentType: concepts --- diff --git a/content/billing/concepts/enterprise-billing/usage-based-licenses.md b/content/billing/concepts/enterprise-billing/usage-based-licenses.md index 937ba8c95b2a..b8eda07c9e7c 100644 --- a/content/billing/concepts/enterprise-billing/usage-based-licenses.md +++ b/content/billing/concepts/enterprise-billing/usage-based-licenses.md @@ -23,15 +23,22 @@ shortTitle: Usage-based licenses contentType: concepts --- -## About usage-based billing +With usage-based billing, you pay monthly for the number of {% data variables.product.prodname_enterprise %} and {% data variables.product.prodname_GH_cs_and_sp %} licenses you use. You do not need to buy a predefined number of licenses in advance. -You pay monthly for the number of {% data variables.product.prodname_enterprise %} and {% data variables.product.prodname_GH_cs_and_sp %} licenses you use. You do not need to buy a predefined number of licenses in advance. Usage-based billing for licenses provides flexibility and cost savings compared to more traditional licensing models, such as volume or subscription models. +Usage-based billing for licenses provides flexibility and cost savings compared to more traditional licensing models, such as volume or subscription models. -{% data reusables.billing.license-type-overview %} -{% data reusables.billing.license-models %} +## Do I have usage-based billing? + +{% data reusables.billing.do-i-have-usage-based %} {% data variables.visual_studio.prodname_vss_ghe %} is currently not supported for usage-based billing. +## Can I use {% data variables.product.prodname_ghe_server %}? + +Although you can sync licenses with {% data variables.product.prodname_ghe_server %}, usage-based licensing is a cloud-first license model where users must first be added to an organization on {% data variables.product.prodname_ghe_cloud %}. + +For a detailed comparison between usage-based and volume licensing models, see [AUTOTITLE](/billing/concepts/enterprise-billing/combined-enterprise-use#about-licensing-models). + ## How are metered licenses measured? {% data reusables.billing.metered-license-measures %} diff --git a/content/billing/concepts/enterprise-billing/visual-studio-subs.md b/content/billing/concepts/enterprise-billing/visual-studio-subs.md index 837605574265..94c879224c79 100644 --- a/content/billing/concepts/enterprise-billing/visual-studio-subs.md +++ b/content/billing/concepts/enterprise-billing/visual-studio-subs.md @@ -42,12 +42,6 @@ If the personal account for an enterprise member does not correspond with the em For more information about {% data variables.product.prodname_enterprise %}, see [AUTOTITLE](/get-started/learning-about-github/githubs-plans#github-enterprise). For more information about accounts on {% data variables.product.prodname_dotcom %}, see [AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts). -You can view the number of {% data variables.product.prodname_enterprise %} licenses available to your enterprise on {% data variables.location.product_location %}. The list of pending invitations includes subscribers who are not yet members of at least one organization in your enterprise. For more information, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account) and [AUTOTITLE](/admin/user-management/managing-users-in-your-enterprise/viewing-people-in-your-enterprise#viewing-members-and-outside-collaborators). - -> [!TIP] If you download a CSV file with your enterprise's license usage in step 6 of [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account#viewing-the-subscription-and-usage-for-your-enterprise-account), any members with a missing value for the "Name" or "Profile" columns have not yet accepted an invitation to join an organization within the enterprise. - -You can also see pending {% data variables.product.prodname_enterprise %} invitations to subscribers in {% data variables.visual_studio.prodname_vss_admin_portal_with_url %}. - ## About licenses for {% data variables.product.prodname_ghe_server %} {% data reusables.enterprise.ghe-includes-ghec-and-ghes %} For more information, see [AUTOTITLE](/admin/overview/about-github-for-enterprises#about-deployment-options). diff --git a/content/billing/concepts/license-consumption.md b/content/billing/concepts/license-consumption.md index 45a6c040d328..08371b565a0c 100644 --- a/content/billing/concepts/license-consumption.md +++ b/content/billing/concepts/license-consumption.md @@ -44,9 +44,7 @@ In addition to {% ifversion enterprise-licensing-language %}showing billable {% With usage-based billing, you pay for the number of licenses you use each month. You do not need to buy a predefined number of licenses in advance. See, [AUTOTITLE](/billing/managing-your-billing/about-usage-based-billing-for-licenses). -You are already enrolled in usage-based billing if you created a trial of {% data variables.product.prodname_ghe_cloud %} on or after August 1, 2024. - -If you currently pay for your {% data variables.product.prodname_enterprise %} licenses by invoice with a volume, subscription, or prepaid agreement, you will continue to be billed in this way until your agreement expires. At renewal, you have the option to switch to the metered billing model. +{% data reusables.billing.do-i-have-usage-based %} ## People that consume a license diff --git a/content/billing/how-tos/manage-server-licenses/download-your-license.md b/content/billing/how-tos/manage-server-licenses/download-your-license.md index 43756fabdf09..45fe22d044c5 100644 --- a/content/billing/how-tos/manage-server-licenses/download-your-license.md +++ b/content/billing/how-tos/manage-server-licenses/download-your-license.md @@ -32,7 +32,7 @@ contentType: how-tos ## About license files for {% data variables.product.prodname_enterprise %} -After you purchase or upgrade a license for {% data variables.product.prodname_enterprise %} from {% data variables.contact.contact_enterprise_sales %}, you must download your new license file. For more information about licenses for {% data variables.product.prodname_enterprise %}, see [AUTOTITLE](/billing/managing-your-license-for-github-enterprise/about-licenses-for-github-enterprise). +After you purchase or upgrade a license for {% data variables.product.prodname_enterprise %} from {% data variables.contact.contact_enterprise_sales %}, you must download your new license file. For more information about licenses for {% data variables.product.prodname_enterprise %}, see [AUTOTITLE](/billing/concepts/enterprise-billing/ghes-license-files). {% data reusables.enterprise-licensing.contact-sales-for-renewals-or-seats %} diff --git a/content/billing/how-tos/manage-server-licenses/sync-license-usage.md b/content/billing/how-tos/manage-server-licenses/sync-license-usage.md index da2ba6d5876f..32b0d46ba691 100644 --- a/content/billing/how-tos/manage-server-licenses/sync-license-usage.md +++ b/content/billing/how-tos/manage-server-licenses/sync-license-usage.md @@ -1,7 +1,6 @@ --- title: Syncing license usage from GitHub Enterprise Server to Cloud -intro: 'You can sync license usage from GitHub Enterprise Server to GitHub Enterprise Cloud to view all license usage across your enterprise in one place and ensure that people with accounts in both environments only consume one user license.' -permissions: 'Enterprise owners can sync license usage between enterprise accounts on {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %}.' +intro: 'Sync licenses manually or with {% data variables.product.prodname_github_connect %}.' versions: ghec: '*' ghes: '*' @@ -15,28 +14,28 @@ redirect_from: contentType: how-tos --- -## About synchronization of license usage +A {% data variables.product.prodname_enterprise %} license allows a user to use both {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}. See [AUTOTITLE](/billing/concepts/enterprise-billing/combined-enterprise-use). -{% data reusables.enterprise-licensing.unique-user-licensing-model %} +To view combined license details on {% data variables.product.prodname_ghe_cloud %} and ensure users only consume one license, you must sync licenses between deployments. You can do this: -{% data reusables.enterprise-licensing.about-license-sync %} - -To ensure that you see up-to-date license details on {% data variables.product.prodname_ghe_cloud %}, you can sync license usage to {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-license-sync %} or {% data variables.enterprise.data_residency_site %}{% endif %} automatically, using {% data variables.product.prodname_github_connect %}. For more information about {% data variables.product.prodname_github_connect %}, see [About {% data variables.product.prodname_github_connect %}]({% ifversion ghec %}/enterprise-server@latest{% endif %}/admin/configuration/configuring-github-connect/about-github-connect){% ifversion ghec %} in the {% data variables.product.prodname_ghe_server %} documentation.{% elsif ghes %}.{% endif %} - -If you don't want to enable {% data variables.product.prodname_github_connect %}, you can manually sync license usage by uploading a file from {% data variables.product.prodname_ghe_server %} to {% data variables.product.prodname_dotcom_the_website %}. +* Automatically, using {% data variables.product.prodname_github_connect %}. +* Manually, by uploading a license file from from {% data variables.product.prodname_ghe_server %} to {% data variables.product.github %}. When you synchronize license usage, only the user ID and email addresses for each user account on {% data variables.product.prodname_ghe_server %} are transmitted to {% data variables.product.prodname_ghe_cloud %}. -{% data reusables.enterprise-licensing.view-consumed-licenses %} - -{% data reusables.enterprise-licensing.verified-domains-license-sync %} - ## Automatically syncing license usage You can use {% data variables.product.prodname_github_connect %} to automatically synchronize user license count and usage between {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %} weekly. After you enable {% data variables.product.prodname_github_connect %}, license data will be automatically synchronized weekly. You can also manually synchronize your license data at any time, by triggering a license sync job. +### Enabling automatic license sync + +To enable license sync, you must: + +1. Enable {% data variables.product.prodname_github_connect %}. See {% ifversion ghes %}[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom) or [AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom){% else %}[AUTOTITLE](/enterprise-server@latest/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom) or [AUTOTITLE](/enterprise-server@latest/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-ghecom) in the {% data variables.product.prodname_ghe_server %} documentation{% endif %}. +1. Enable license sync. See {% ifversion ghes %}[AUTOTITLE](/admin/configuring-settings/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise){% else %}[AUTOTITLE](/enterprise-server@latest/admin/configuring-settings/configuring-github-connect/enabling-github-connect-for-githubcom) in the {% data variables.product.prodname_ghe_server %} documentation{% endif %}. + ### Triggering a license sync job 1. Sign in to your {% data variables.product.prodname_ghe_server %} instance. @@ -45,9 +44,7 @@ After you enable {% data variables.product.prodname_github_connect %}, license d {% data reusables.enterprise-accounts.license-tab-ghes %} 1. Under "License sync", click **{% octicon "sync" aria-hidden="true" aria-label="sync" %} Sync now**. -If there is no **{% octicon "sync" aria-hidden="true" aria-label="sync" %} Sync now** button, you need to enable license synchronization. An information message, "License sync is disabled. You can enable it in the GitHub Connect settings" is shown. Click the "GitHub Connect settings" link. For more information, see [Enabling automatic user license sync for your enterprise]({% ifversion ghec %}/enterprise-server@latest{% endif %}/admin/configuration/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise){% ifversion ghec %} in the {% data variables.product.prodname_ghe_server %} documentation.{% elsif ghes %}.{% endif %} - -## Manually uploading GitHub Enterprise Server license usage +## Manually uploading {% data variables.product.prodname_ghe_server %} license usage You can download a JSON file from {% data variables.product.prodname_ghe_server %} and upload the file to {% data variables.product.prodname_ghe_cloud %} to manually sync user license usage between the two deployments. @@ -62,3 +59,9 @@ You can download a JSON file from {% data variables.product.prodname_ghe_server {% data reusables.enterprise-accounts.licensing-tab-both-platforms %} 1. Next to "Enterprise Server instances", click **Add server usage**. 1. Upload the JSON file you downloaded from {% data variables.product.prodname_ghe_server %}. + +## Next steps + +{% data reusables.enterprise-licensing.view-consumed-licenses %} + +To make troubleshooting easier, if you synchronize license usage and do not use {% data variables.product.prodname_emus %}, we highly recommend enabling verified domains for your enterprise account on {% data variables.product.prodname_ghe_cloud %}. See [AUTOTITLE](/enterprise-cloud@latest/admin/configuration/configuring-your-enterprise/verifying-or-approving-a-domain-for-your-enterprise){% ifversion ghes %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %} diff --git a/content/billing/how-tos/manage-server-licenses/upload-new-license.md b/content/billing/how-tos/manage-server-licenses/upload-new-license.md index d66cf265eda1..e73c2dd0a489 100644 --- a/content/billing/how-tos/manage-server-licenses/upload-new-license.md +++ b/content/billing/how-tos/manage-server-licenses/upload-new-license.md @@ -18,7 +18,7 @@ contentType: how-tos When you purchase or download a new license for {% data variables.product.prodname_ghe_server %} you must upload the new license file to {% data variables.product.prodname_ghe_server %} to unlock your new user licenses. -If you use {% data variables.product.prodname_ghe_cloud %}, you can download a license from your enterprise. For more information, see [AUTOTITLE](/billing/managing-your-license-for-github-enterprise/about-licenses-for-github-enterprise) and [AUTOTITLE](/billing/managing-your-license-for-github-enterprise/downloading-your-license-for-github-enterprise). +If you use {% data variables.product.prodname_ghe_cloud %}, you can download a license from your enterprise. For more information, see [AUTOTITLE](/billing/concepts/enterprise-billing/ghes-license-files) and [AUTOTITLE](/billing/managing-your-license-for-github-enterprise/downloading-your-license-for-github-enterprise). {% data reusables.enterprise-licensing.contact-sales-for-renewals-or-seats %} diff --git a/content/billing/how-tos/set-up-payment/set-up-vs-subscription.md b/content/billing/how-tos/set-up-payment/set-up-vs-subscription.md index b44f48c8360d..4d3e9e6484d0 100644 --- a/content/billing/how-tos/set-up-payment/set-up-vs-subscription.md +++ b/content/billing/how-tos/set-up-payment/set-up-vs-subscription.md @@ -88,6 +88,14 @@ When you've identified {% data variables.product.github %} users who aren't corr 1. To match a user to their {% data variables.product.prodname_vs %} account, click {% octicon "kebab-horizontal" aria-label="More options" %}, then click **Change to {% data variables.product.prodname_vs %} license**. 1. Select the user's {% data variables.product.prodname_vs %} login email, then click **Confirm change**. +## Viewing available licenses + +You can view the number of {% data variables.product.prodname_enterprise %} licenses available to your enterprise on {% data variables.location.product_location %}. The list of pending invitations includes subscribers who are not yet members of at least one organization in your enterprise. For more information, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account) and [AUTOTITLE](/admin/user-management/managing-users-in-your-enterprise/viewing-people-in-your-enterprise#viewing-members-and-outside-collaborators). + +> [!TIP] If you download a CSV file with your enterprise's license usage in step 6 of [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account#viewing-the-subscription-and-usage-for-your-enterprise-account), any members with a missing value for the "Name" or "Profile" columns have not yet accepted an invitation to join an organization within the enterprise. + +You can also see pending {% data variables.product.prodname_enterprise %} invitations to subscribers in {% data variables.visual_studio.prodname_vss_admin_portal_with_url %}. + ## Further reading * [AUTOTITLE](/get-started/onboarding/getting-started-with-github-enterprise-cloud) diff --git a/data/reusables/billing/do-i-have-usage-based.md b/data/reusables/billing/do-i-have-usage-based.md new file mode 100644 index 000000000000..2729cf0949db --- /dev/null +++ b/data/reusables/billing/do-i-have-usage-based.md @@ -0,0 +1,3 @@ +You are already enrolled in usage-based billing if you created a trial of {% data variables.product.prodname_ghe_cloud %} on or after August 1, 2024. + +If you currently pay for your {% data variables.product.prodname_enterprise %} licenses by invoice with a volume, subscription, or prepaid agreement, you will continue to be billed in this way until your agreement expires. At renewal, you have the option to switch to the metered billing model. diff --git a/data/reusables/billing/license-models.md b/data/reusables/billing/license-models.md deleted file mode 100644 index b8ba350dc9b3..000000000000 --- a/data/reusables/billing/license-models.md +++ /dev/null @@ -1,17 +0,0 @@ -### Comparison of licensing models - -{% rowheaders %} - -| License model | GHE (Metered) | GHE (Volume/subscription) | -|----------------------------------|-------------------------------------|-----------------------------------------------------------------------------------------------| -| **Billing type** | Usage-based | Volume-based | -| **Cloud vs. Server** | Cloud-first, with a Server use right for Cloud users | 1 user license covers both Cloud and Server (hybrid, Cloud-only, or Server-only) | -| **Setup** | Self-service | Manual setup via {% data variables.product.github %} Sales | -| **Server license generation** | Users generate their own {% data variables.product.prodname_ghe_server %} license | Enterprise owners download their own {% data variables.product.prodname_ghe_server %} license | -| **License file scope** | Covers Cloud-assigned users at time of generation | Covers all purchased users for both Cloud and Server | -| **License expiration** | Expires in 12 months | Aligned with volume license term | -| **License key usage** | Limits max Server users | Covers all users in the volume subscription | -| **Required {% data variables.product.prodname_enterprise %} version** | {% data variables.product.prodname_enterprise %} 3.13+, with {% data variables.product.prodname_github_connect %} | No specific version required | -| **Billing model** | Invoiced for users not assigned on Cloud via {% data variables.product.prodname_github_connect %} | Fixed cost based on purchased volume | - -{% endrowheaders %} diff --git a/data/reusables/billing/license-type-overview.md b/data/reusables/billing/license-type-overview.md deleted file mode 100644 index 23ef3fd5f52e..000000000000 --- a/data/reusables/billing/license-type-overview.md +++ /dev/null @@ -1,14 +0,0 @@ -### {% data variables.product.prodname_enterprise %} licensing models - -There are two types of {% data variables.product.prodname_enterprise %} (GHE) licenses. - -* **GHE (Metered)**: A cloud-first license where users must first be assigned to a {% data variables.product.prodname_ghe_cloud %} organization. - * All Cloud users automatically receive a use right for {% data variables.product.prodname_ghe_server %}. - * Billing is based on the number of active users each month. - * Users can generate their own Server license, which covers the number of assigned Cloud seats at the time of generation and is valid for one year. - * Server-only users will be added to GHE (Metered) billing. These users are de-duplicated with email matching to avoid double billing. - -* **GHE (Volume/Subscription, also called GHE Unified)**: A bundled license for both {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}. - * One license covers both {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}, allowing users to work in either or both. - * Users can access both services via {% data variables.product.prodname_github_connect %}. - * This license requires manual setup and is provided by {% data variables.product.github %} Sales. diff --git a/data/reusables/copilot/data-residency-availability.md b/data/reusables/copilot/data-residency-availability.md deleted file mode 100644 index 57fa7058a2b0..000000000000 --- a/data/reusables/copilot/data-residency-availability.md +++ /dev/null @@ -1 +0,0 @@ -Billing for premium requests is **not available** if you use {% data variables.enterprise.data_residency %}. This means premium requests are not counted and you will not be charged for them. Support for premium request billing in data residency environments is coming soon. diff --git a/data/reusables/enterprise-accounts/billing-tab-both-platforms.md b/data/reusables/enterprise-accounts/billing-tab-both-platforms.md deleted file mode 100644 index 602cb450b50d..000000000000 --- a/data/reusables/enterprise-accounts/billing-tab-both-platforms.md +++ /dev/null @@ -1 +0,0 @@ -1. {% ifversion horizontal-nav %}At the top of the page, click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing and licensing** (visible if you use the new billing platform). Alternatively, click **{% octicon "gear" aria-hidden="true" aria-label="gear" %} Settings** and then **Billing**.{% else %}On the left side of the page, in the enterprise account sidebar, click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing** (visible if you use the new billing platform). Alternatively, click **{% octicon "gear" aria-hidden="true" aria-label="gear" %} Settings** and then **Billing**.{% endif %} diff --git a/data/reusables/enterprise-licensing/about-license-sync.md b/data/reusables/enterprise-licensing/about-license-sync.md index b5bb3c565aaa..f80f5da31210 100644 --- a/data/reusables/enterprise-licensing/about-license-sync.md +++ b/data/reusables/enterprise-licensing/about-license-sync.md @@ -1 +1 @@ -For a person using multiple {% data variables.product.prodname_enterprise %} environments to only consume a single license, you must synchronize license usage between environments. Then, {% data variables.product.company_short %} will deduplicate users based on the email addresses associated with their user accounts. {% data variables.product.company_short %} deduplicates licenses for the {% data variables.product.prodname_enterprise %} plan itself, and{% ifversion ghec %} if you use {% data variables.product.prodname_ghe_server %} version 3.12 or later,{% endif %} for {% data variables.product.prodname_GHAS %} products. For more information, see [AUTOTITLE](/billing/managing-your-license-for-github-enterprise/troubleshooting-license-usage-for-github-enterprise#about-the-calculation-of-consumed-licenses). +For a person using multiple {% data variables.product.prodname_enterprise %} environments to only consume a single license, you must synchronize license usage between environments. Then, {% data variables.product.company_short %} will deduplicate users based on the email addresses associated with their user accounts. {% data variables.product.company_short %} deduplicates licenses for the {% data variables.product.prodname_enterprise %} plan itself, and{% ifversion ghec %} if you use {% data variables.product.prodname_ghe_server %} version 3.12 or later,{% endif %} for {% data variables.product.prodname_GHAS %} products. See {% ifversion ghes %}[AUTOTITLE](/billing/how-tos/manage-server-licenses/sync-license-usage){% else %}[AUTOTITLE](/enterprise-cloud@latest/billing/how-tos/manage-server-licenses/sync-license-usage){% endif %}. diff --git a/data/reusables/enterprise_installation/software-license.md b/data/reusables/enterprise_installation/software-license.md index a94fa9ccb96d..ed64ef433285 100644 --- a/data/reusables/enterprise_installation/software-license.md +++ b/data/reusables/enterprise_installation/software-license.md @@ -1 +1 @@ -You must have a {% data variables.product.prodname_enterprise %} license file. For more information, see [AUTOTITLE](/admin/overview/setting-up-a-trial-of-github-enterprise-server) and [AUTOTITLE](/billing/managing-your-license-for-github-enterprise/about-licenses-for-github-enterprise). +You must have a {% data variables.product.prodname_enterprise %} license file. For more information, see [AUTOTITLE](/admin/overview/setting-up-a-trial-of-github-enterprise-server) and [AUTOTITLE](/billing/concepts/enterprise-billing/ghes-license-files). diff --git a/src/graphql/data/fpt/changelog.json b/src/graphql/data/fpt/changelog.json index 96014071b791..c0d4207c7b14 100644 --- a/src/graphql/data/fpt/changelog.json +++ b/src/graphql/data/fpt/changelog.json @@ -1,4 +1,23 @@ [ + { + "schemaChanges": [ + { + "title": "The GraphQL schema includes these changes:", + "changes": [] + } + ], + "previewChanges": [], + "upcomingChanges": [ + { + "title": "The following changes will be made to the schema:", + "changes": [ + "
On member NotificationThread.list
:list
will be removed. Use the optionalList
field instead. Effective 2026-01-01.
On member NotificationThread.subject
:subject
will be removed. Use the optionalSubject
field instead. Effective 2026-01-01.
subject
will be removed. Use the optionalSubject
field instead.
Null values are possible for this field.
", + "date": "2026-01-01", + "criticality": "breaking", + "owner": "github/notifications" + }, + { + "location": "NotificationThread.list", + "description": "list
will be removed. Use the optionalList
field instead.
Null values are possible for this field.
", + "date": "2026-01-01", + "criticality": "breaking", + "owner": "github/notifications" + } + ], "2025-10-01": [ { "location": "SecurityAdvisory.cvss", diff --git a/src/graphql/data/ghec/graphql_upcoming_changes.public.yml b/src/graphql/data/ghec/graphql_upcoming_changes.public.yml index 4d0c9d0962c9..6f13e8c4bafc 100644 --- a/src/graphql/data/ghec/graphql_upcoming_changes.public.yml +++ b/src/graphql/data/ghec/graphql_upcoming_changes.public.yml @@ -1526,6 +1526,18 @@ upcoming_changes: date: '2025-10-01T00:00:00+00:00' criticality: breaking owner: github/advisory-database + - location: NotificationThread.list + description: '`list` will be removed. Use the `optionalList` field instead.' + reason: Null values are possible for this field. + date: '2026-01-01T00:00:00+00:00' + criticality: breaking + owner: github/notifications + - location: NotificationThread.subject + description: '`subject` will be removed. Use the `optionalSubject` field instead.' + reason: Null values are possible for this field. + date: '2026-01-01T00:00:00+00:00' + criticality: breaking + owner: github/notifications - location: AuditEntry.action description: '`action` will be removed.' reason: The GraphQL audit-log is deprecated. Please use the REST API instead. diff --git a/src/graphql/data/ghec/upcoming-changes.json b/src/graphql/data/ghec/upcoming-changes.json index 4f5ab80b738c..bbeb98409f6e 100644 --- a/src/graphql/data/ghec/upcoming-changes.json +++ b/src/graphql/data/ghec/upcoming-changes.json @@ -8873,6 +8873,24 @@ "owner": "audit_logs" } ], + "2026-01-01": [ + { + "location": "NotificationThread.subject", + "description": "subject
will be removed. Use the optionalSubject
field instead.
Null values are possible for this field.
", + "date": "2026-01-01", + "criticality": "breaking", + "owner": "github/notifications" + }, + { + "location": "NotificationThread.list", + "description": "list
will be removed. Use the optionalList
field instead.
Null values are possible for this field.
", + "date": "2026-01-01", + "criticality": "breaking", + "owner": "github/notifications" + } + ], "2025-10-01": [ { "location": "SecurityAdvisory.cvss", diff --git a/src/rest/data/ghec-2022-11-28/schema.json b/src/rest/data/ghec-2022-11-28/schema.json index 23f338a4936c..63e8c96d1652 100644 --- a/src/rest/data/ghec-2022-11-28/schema.json +++ b/src/rest/data/ghec-2022-11-28/schema.json @@ -1351,13 +1351,13 @@ } ], "previews": [], - "descriptionHTML": "Gets GitHub Actions cache usage for a repository.\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.
\nAnyone with read access to the repository can use this endpoint.
\nIf the repository is private, OAuth tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets GitHub Actions cache usage for a repository.\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.
\nAnyone with read access to the repository can use this endpoint.
\nIf the repository is private, OAuth tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
Gets a GitHub-hosted runner configured in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets a GitHub-hosted runner configured in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Deletes a GitHub-hosted runner for an enterprise.
", "statusCodes": [ { "httpStatusCode": "202", "description": "Accepted
" } - ] + ], + "descriptionHTML": "Deletes a GitHub-hosted runner for an enterprise.
" }, { "serverUrl": "https://api.github.com", @@ -4918,13 +4918,13 @@ } ], "previews": [], - "descriptionHTML": "Get the list of partner images available for GitHub-hosted runners for an organization.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Get the list of partner images available for GitHub-hosted runners for an organization.
" }, { "serverUrl": "https://api.github.com", @@ -5129,13 +5129,13 @@ } ], "previews": [], - "descriptionHTML": "Get the list of machine specs available for GitHub-hosted runners for an organization.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Get the list of machine specs available for GitHub-hosted runners for an organization.
" }, { "serverUrl": "https://api.github.com", @@ -7495,13 +7495,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.\"
OAuth app tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
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.\"
OAuth app tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
Gets the selected actions and reusable workflows 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.\"
OAuth app tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets the selected actions and reusable workflows 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.\"
OAuth app tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
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.\"
OAuth tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
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.\"
OAuth tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
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.\"
OAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
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.\"
OAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
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.\"
OAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
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.\"
OAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
Removes a repository from 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.\"
OAuth tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Removes a repository from 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.\"
OAuth tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.
\nThe authenticated user must have collaborator access to a repository to create, update, or read secrets.
\nOAuth 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.
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.
\nThe authenticated user must have collaborator access to a repository to create, update, or read secrets.
\nOAuth 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.
Creates or updates an organization secret with an encrypted value. Encrypt your secret using\nLibSodium. For more information, see \"Encrypting secrets for the REST API.\"
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth 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.
Response when updating a secret
" } - ] + ], + "descriptionHTML": "Creates or updates an organization secret with an encrypted value. Encrypt your secret using\nLibSodium. For more information, see \"Encrypting secrets for the REST API.\"
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth 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.
Deletes a secret in an organization using the secret name.
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth 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.
No Content
" } - ] + ], + "descriptionHTML": "Deletes a secret in an organization using the secret name.
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth 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.
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.
Authenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth 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.
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.
Authenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth 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.
Gets a specific self-hosted runner group for an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets a specific self-hosted runner group for an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
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.\"
OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
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.\"
OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Lists the self-hosted runners that are in a specific enterprise group.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists the self-hosted runners that are in a specific enterprise group.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Replaces the list of self-hosted runners that are part of an enterprise runner group.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Replaces the list of self-hosted runners that are part of an enterprise runner group.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Lists all self-hosted runner groups configured in an organization and inherited from an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists all self-hosted runner groups configured in an organization and inherited from an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
Lists the GitHub-hosted runners in an organization group.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists the GitHub-hosted runners in an organization group.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
Lists all self-hosted runners configured for an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists all self-hosted runners configured for an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Returns a token that you can pass to the config
script to remove a self-hosted runner from an organization. The token expires after one hour.
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:
./config.sh remove --token TOKEN\n
\nAuthenticated users must have admin access to the organization to use this endpoint.
\nOAuth 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.
Created
" } - ] + ], + "descriptionHTML": "Returns a token that you can pass to the config
script to remove a self-hosted runner from an organization. The token expires after one hour.
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:
./config.sh remove --token TOKEN\n
\nAuthenticated users must have admin access to the organization to use this endpoint.
\nOAuth 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.
Gets a specific self-hosted runner configured in an organization.
\nAuthenticated users must have admin access to the organization to use this endpoint.
\nOAuth 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.
OK
" } - ] + ], + "descriptionHTML": "Gets a specific self-hosted runner configured in an organization.
\nAuthenticated users must have admin access to the organization to use this endpoint.
\nOAuth 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.
Lists binaries for the runner application that you can download and run.
\nAuthenticated users must have admin access to the repository to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists binaries for the runner application that you can download and run.
\nAuthenticated users must have admin access to the repository to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
Approve or reject pending deployments that are waiting on approval by a required reviewer.
\nRequired reviewers with read access to the repository contents and deployments can use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Approve or reject pending deployments that are waiting on approval by a required reviewer.
\nRequired reviewers with read access to the repository contents and deployments can use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
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.
\nOK
" } - ] + ], + "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.
\nLists repositories a user is watching.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Lists repositories a user is watching.
" } ] }, @@ -100305,13 +100305,13 @@ } ], "previews": [], - "descriptionHTML": "Gets the announcement banner currently set for the organization. Only returns the announcement banner set at the\norganization level. Organization members may also see an enterprise-level announcement banner. To get an\nannouncement banner displayed at the enterprise level, use the enterprise-level endpoint.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Gets the announcement banner currently set for the organization. Only returns the announcement banner set at the\norganization level. Organization members may also see an enterprise-level announcement banner. To get an\nannouncement banner displayed at the enterprise level, use the enterprise-level endpoint.
" }, { "serverUrl": "https://api.github.com", @@ -100436,13 +100436,13 @@ } ], "previews": [], - "descriptionHTML": "Sets the announcement banner to display for the organization.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Sets the announcement banner to display for the organization.
" }, { "serverUrl": "https://api.github.com", @@ -109646,13 +109646,13 @@ } ], "previews": [], - "descriptionHTML": "Enables an authenticated GitHub App to find the organization's installation information.
\nYou 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.
\nYou must use a JWT to access this endpoint.
" }, { "serverUrl": "https://api.github.com", @@ -113035,13 +113035,13 @@ } ], "previews": [], - "descriptionHTML": "Revokes the installation token you're using to authenticate as an installation and access this endpoint.
\nOnce 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.
\nOnce 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": "https://api.github.com", @@ -120702,13 +120702,13 @@ } ], "previews": [], - "descriptionHTML": "Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see \"Creating a GitHub App.\"
\nYou must use a JWT to access this endpoint.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see \"Creating a GitHub App.\"
\nYou must use a JWT to access this endpoint.
" }, { "serverUrl": "https://api.github.com", @@ -121830,13 +121830,13 @@ } ], "previews": [], - "descriptionHTML": "Gets the free and paid storage used for GitHub Packages in gigabytes.
\nPaid minutes only apply to packages stored for private repositories. For more information, see \"Managing billing for GitHub Packages.\"
\nOAuth app tokens and personal access tokens (classic) need the repo
or admin:org
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets the free and paid storage used for GitHub Packages in gigabytes.
\nPaid minutes only apply to packages stored for private repositories. For more information, see \"Managing billing for GitHub Packages.\"
\nOAuth app tokens and personal access tokens (classic) need the repo
or admin:org
scope to use this endpoint.
Gets the summary of the free and paid GitHub Actions minutes used.
\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see \"Managing billing for GitHub Actions\".
\nOAuth app tokens and personal access tokens (classic) need the user
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets the summary of the free and paid GitHub Actions minutes used.
\nPaid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see \"Managing billing for GitHub Actions\".
\nOAuth app tokens and personal access tokens (classic) need the user
scope to use this endpoint.
Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages.
\nPaid minutes only apply to packages stored for private repositories. For more information, see \"Managing billing for GitHub Packages.\"
\nOAuth app tokens and personal access tokens (classic) need the user
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets the estimated paid and estimated total storage used for GitHub Actions and GitHub Packages.
\nPaid minutes only apply to packages stored for private repositories. For more information, see \"Managing billing for GitHub Packages.\"
\nOAuth app tokens and personal access tokens (classic) need the user
scope to use this endpoint.
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": "https://api.github.com", @@ -144730,7 +144730,6 @@ } ], "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.
\nReplaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. 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", @@ -144740,7 +144739,8 @@ "httpStatusCode": "422", "description": "Validation failed, or the endpoint has been spammed.
" } - ] + ], + "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.
\nReplaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. 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": "https://api.github.com", @@ -153342,13 +153342,13 @@ } ], "previews": [], - "descriptionHTML": "Creates a new check run for a specific commit in a repository.
\nTo create a check run, you must use a GitHub App. OAuth apps and authenticated users are not able to create a check suite.
\nIn 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.
\nNote
\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.
Created
" } - ] + ], + "descriptionHTML": "Creates a new check run for a specific commit in a repository.
\nTo create a check run, you must use a GitHub App. OAuth apps and authenticated users are not able to create a check suite.
\nIn 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.
\nNote
\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.
Gets a single check suite using its id
.
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
.
OAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint on a private repository.
OK
" } - ] + ], + "descriptionHTML": "Gets a single check suite using its id
.
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
.
OAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint on a private repository.
Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the check_suite
webhook event with the action rerequested
. When a check suite is rerequested
, its status
is reset to queued
and the conclusion
is cleared.
Created
" } - ] + ], + "descriptionHTML": "Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the check_suite
webhook event with the action rerequested
. When a check suite is rerequested
, its status
is reset to queued
and the conclusion
is cleared.
Lists the default code security configurations for an enterprise.
\nThe authenticated user must be an administrator of the enterprise in order to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the read:enterprise
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists the default code security configurations for an enterprise.
\nThe authenticated user must be an administrator of the enterprise in order to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the read:enterprise
scope to use this endpoint.
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.
\nIf insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled.
\nThe authenticated user must be an administrator or security manager for the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the write:org
scope to use this endpoint.
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.
\nIf insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled.
\nThe authenticated user must be an administrator or security manager for the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the write:org
scope to use this endpoint.
Gets a public key for an organization, which is required in order to encrypt secrets. You need to encrypt the value of a secret before you can create or update secrets.\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets a public key for an organization, which is required in order to encrypt secrets. You need to encrypt the value of a secret before you can create or update secrets.\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
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.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
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.
OAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
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.
OAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "https://api.github.com", @@ -292109,13 +292109,13 @@ } ], "previews": [], - "descriptionHTML": "Creates a hosted compute network configuration for an enterprise.
", "statusCodes": [ { "httpStatusCode": "201", "description": "Created
" } - ] + ], + "descriptionHTML": "Creates a hosted compute network configuration for an enterprise.
" }, { "serverUrl": "https://api.github.com", @@ -326336,13 +326336,13 @@ } ], "previews": [], - "descriptionHTML": "Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response.
" }, { "serverUrl": "https://api.github.com", @@ -352894,13 +352894,13 @@ } ], "previews": [], - "descriptionHTML": "Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced.
", "statusCodes": [ { "httpStatusCode": "201", "description": "Created
" } - ] + ], + "descriptionHTML": "Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced.
" }, { "serverUrl": "https://api.github.com", @@ -427101,7 +427101,6 @@ } ], "previews": [], - "descriptionHTML": "Lists the most commonly used licenses on GitHub. For more information, see \"Licensing a repository .\"
", "statusCodes": [ { "httpStatusCode": "200", @@ -427111,7 +427110,8 @@ "httpStatusCode": "304", "description": "Not modified
" } - ] + ], + "descriptionHTML": "Lists the most commonly used licenses on GitHub. For more information, see \"Licensing a repository .\"
" }, { "serverUrl": "https://api.github.com", @@ -427986,13 +427986,13 @@ } ], "previews": [], - "descriptionHTML": "Get Hypermedia links to resources accessible in GitHub's REST API
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Get Hypermedia links to resources accessible in GitHub's REST API
" }, { "serverUrl": "https://api.github.com", @@ -428342,7 +428342,6 @@ } ], "previews": [], - "descriptionHTML": "Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see \"About GitHub's IP addresses.\"
\nThe API's response also includes a list of GitHub's domain names.
\nThe values shown in the documentation's response are example values. You must always query the API directly to get the latest values.
\nNote
\n\nThis endpoint returns both IPv4 and IPv6 addresses. However, not all features support IPv6. You should refer to the specific documentation for each feature to determine if IPv6 is supported.
\nNot modified
" } - ] + ], + "descriptionHTML": "Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see \"About GitHub's IP addresses.\"
\nThe API's response also includes a list of GitHub's domain names.
\nThe values shown in the documentation's response are example values. You must always query the API directly to get the latest values.
\nNote
\n\nThis endpoint returns both IPv4 and IPv6 addresses. However, not all features support IPv6. You should refer to the specific documentation for each feature to determine if IPv6 is supported.
\nLists all organizations, in the order that they were created.
\nNote
\n\nPagination is powered exclusively by the since
parameter. Use the Link header to get the URL for the next page of organizations.
Not modified
" } - ] + ], + "descriptionHTML": "Lists all organizations, in the order that they were created.
\nNote
\n\nPagination is powered exclusively by the since
parameter. Use the Link header to get the URL for the next page of organizations.
Gets information about an organization.
\nWhen the value of two_factor_requirement_enabled
is true
, the organization requires all members, billing managers, outside collaborators, guest collaborators, repository collaborators, or everyone with access to any repository within the organization to enable two-factor authentication.
To see the full details about an organization, the authenticated user must be an organization owner.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to see the full details about an organization.
To see information about an organization's GitHub Enterprise Cloud plan, GitHub Apps need the Organization plan
permission.
Resource not found
" } - ] + ], + "descriptionHTML": "Gets information about an organization.
\nWhen the value of two_factor_requirement_enabled
is true
, the organization requires all members, billing managers, outside collaborators, guest collaborators, repository collaborators, or everyone with access to any repository within the organization to enable two-factor authentication.
To see the full details about an organization, the authenticated user must be an organization owner.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to see the full details about an organization.
To see information about an organization's GitHub Enterprise Cloud plan, GitHub Apps need the Organization plan
permission.
Lists all GitHub Apps in an organization. The installation count includes\nall GitHub Apps installed on repositories in the organization.
\nThe authenticated user must be an organization owner to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:read
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists all GitHub Apps in an organization. The installation count includes\nall GitHub Apps installed on repositories in the organization.
\nThe authenticated user must be an organization owner to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:read
scope to use this endpoint.
Get API request statistics for all subjects within an organization within a specified time frame. Subjects can be users or GitHub Apps.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Get API request statistics for all subjects within an organization within a specified time frame. Subjects can be users or GitHub Apps.
" }, { "serverUrl": "https://api.github.com", @@ -450249,13 +450249,13 @@ } ], "previews": [], - "descriptionHTML": "List the users blocked by an organization.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "List the users blocked by an organization.
" }, { "serverUrl": "https://api.github.com", @@ -452515,13 +452515,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.
\nList the custom repository roles available in this organization. For more information on custom repository roles, see \"About custom repository roles.\"
\nThe authenticated user must be administrator of the organization or of a repository of the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
or repo
scope to use this endpoint.
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.
\nList the custom repository roles available in this organization. For more information on custom repository roles, see \"About custom repository roles.\"
\nThe authenticated user must be administrator of the organization or of a repository of the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
or repo
scope to use this endpoint.
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.\"
\nThe authenticated user must be an administrator for the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
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.\"
\nThe authenticated user must be an administrator for the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
Lists the fine-grained permissions that can be used in custom repository roles for an organization. For more information, see \"About custom repository roles.\"
\nThe authenticated user must be an administrator of the organization or of a repository of the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
or repo
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Lists the fine-grained permissions that can be used in custom repository roles for an organization. For more information, see \"About custom repository roles.\"
\nThe authenticated user must be an administrator of the organization or of a repository of the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
or repo
scope to use this endpoint.
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": "https://api.github.com", @@ -461465,13 +461465,13 @@ } ], "previews": [], - "descriptionHTML": "Deletes a hosted compute network configuration from an organization.
\nOAuth app tokens and personal access tokens (classic) need the write:network_configurations
scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Deletes a hosted compute network configuration from an organization.
\nOAuth app tokens and personal access tokens (classic) need the write:network_configurations
scope to use this endpoint.
Gets a hosted compute network settings resource configured for an organization.
\nOAuth app tokens and personal access tokens (classic) need the read:network_configurations
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "Gets a hosted compute network settings resource configured for an organization.
\nOAuth app tokens and personal access tokens (classic) need the read:network_configurations
scope to use this endpoint.
Revokes all assigned organization roles from a user. For more information on organization roles, see \"Using organization roles.\"
\nThe authenticated user must be an administrator for the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Revokes all assigned organization roles from a user. For more information on organization roles, see \"Using organization roles.\"
\nThe authenticated user must be an administrator for the organization to use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
Warning
\n\nClosing down notice: This operation is closing down and will be removed starting January 1, 2026. Please use the \"Organization Roles\" endpoints instead.
\nOK
" } - ] + ], + "descriptionHTML": "Warning
\n\nClosing down notice: This operation is closing down and will be removed starting January 1, 2026. Please use the \"Organization Roles\" endpoints instead.
\nGets a specific package in an organization.
\nOAuth app tokens and personal access tokens (classic) need the read:packages
scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"
OK
" } - ] + ], + "descriptionHTML": "Gets a specific package in an organization.
\nOAuth app tokens and personal access tokens (classic) need the read:packages
scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"
Edits the content of a specified review comment.
\nThis endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/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.application/vnd.github-commitcomment.text+json
: Returns a text only representation of the markdown body. Response will include body_text
.application/vnd.github-commitcomment.html+json
: Returns HTML rendered from the body's markdown. Response will include body_html
.application/vnd.github-commitcomment.full+json
: Returns raw, text, and HTML representations. Response will include body
, body_text
, and body_html
.OK
" } - ] + ], + "descriptionHTML": "Edits the content of a specified review comment.
\nThis endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/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.application/vnd.github-commitcomment.text+json
: Returns a text only representation of the markdown body. Response will include body_text
.application/vnd.github-commitcomment.html+json
: Returns HTML rendered from the body's markdown. Response will include body_html
.application/vnd.github-commitcomment.full+json
: Returns raw, text, and HTML representations. Response will include body
, body_text
, and body_html
.List the reactions to a team discussion comment.
\nNote
\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/reactions
.
OAuth app tokens and personal access tokens (classic) need the read:discussion
scope to use this endpoint.
OK
" } - ] + ], + "descriptionHTML": "List the reactions to a team discussion comment.
\nNote
\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/reactions
.
OAuth app tokens and personal access tokens (classic) need the read:discussion
scope to use this endpoint.
List a collection of artifact attestations with a given subject digest that are associated with a repository.
\nThe authenticated user making the request must have read access to the repository. In addition, when using a fine-grained access token the attestations:read
permission is required.
Please note: in order to offer meaningful security benefits, an attestation's signature and timestamps must be cryptographically verified, and the identity of the attestation signer must be validated. Attestations can be verified using the GitHub CLI attestation verify
command. For more information, see our guide on how to use artifact attestations to establish a build's provenance.
OK
" } - ] + ], + "descriptionHTML": "List a collection of artifact attestations with a given subject digest that are associated with a repository.
\nThe authenticated user making the request must have read access to the repository. In addition, when using a fine-grained access token the attestations:read
permission is required.
Please note: in order to offer meaningful security benefits, an attestation's signature and timestamps must be cryptographically verified, and the identity of the attestation signer must be validated. Attestations can be verified using the GitHub CLI attestation verify
command. For more information, see our guide on how to use artifact attestations to establish a build's provenance.
Shows whether Dependabot security updates are enabled, disabled or paused for a repository. The authenticated user must have admin read access to the repository. For more information, see \"Configuring Dependabot security updates\".
", "statusCodes": [ { "httpStatusCode": "200", @@ -576084,7 +576083,8 @@ "httpStatusCode": "404", "description": "Not Found if Dependabot is not enabled for the repository
" } - ] + ], + "descriptionHTML": "Shows whether Dependabot security updates are enabled, disabled or paused for a repository. The authenticated user must have admin read access to the repository. For more information, see \"Configuring Dependabot security updates\".
" }, { "serverUrl": "https://api.github.com", @@ -592028,13 +592028,13 @@ } ], "previews": [], - "descriptionHTML": "Lists public repositories for the specified user.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Lists public repositories for the specified user.
" } ], "autolinks": [ @@ -603381,13 +603381,13 @@ } ], "previews": [], - "descriptionHTML": "Disables Git LFS for a repository.
\nOAuth app tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
No Content
" } - ] + ], + "descriptionHTML": "Disables Git LFS for a repository.
\nOAuth app tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
Warning
\n\nClosing down notice: Projects (classic) is being deprecated in favor of the new Projects experience.\nSee the changelog for more information.
\nNot Found if project is not managed by this team
" } - ] + ], + "descriptionHTML": "Warning
\n\nClosing down notice: Projects (classic) is being deprecated in favor of the new Projects experience.\nSee the changelog for more information.
\nDisplays 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.
\nYou 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.
\nYou 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": "https://api.github.com", @@ -683891,13 +683891,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 Cloud 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.\"
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 Cloud 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.\"
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": "https://api.github.com", @@ -684686,13 +684686,13 @@ } ], "previews": [], - "descriptionHTML": "The return hash contains a role
field which refers to the Organization Invitation role and will be one of the following values: direct_member
, admin
, billing_manager
, hiring_manager
, or reinstate
. If the invitee is not a GitHub Enterprise Cloud member, the login
field in the return hash will be null
.
Note
\n\nYou can also specify a team by org_id
and team_id
using the route GET /organizations/{org_id}/team/{team_id}/invitations
.
OK
" } - ] + ], + "descriptionHTML": "The return hash contains a role
field which refers to the Organization Invitation role and will be one of the following values: direct_member
, admin
, billing_manager
, hiring_manager
, or reinstate
. If the invitee is not a GitHub Enterprise Cloud member, the login
field in the return hash will be null
.
Note
\n\nYou can also specify a team by org_id
and team_id
using the route GET /organizations/{org_id}/team/{team_id}/invitations
.
Creates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty groups
array will remove all connections for a team.
Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see GitHub's products in the GitHub Help documentation.
\nNote
\n\nYou can also specify a team by org_id
and team_id
using the route PATCH /organizations/{org_id}/team/{team_id}/team-sync/group-mappings
.
OK
" } - ] + ], + "descriptionHTML": "Creates, updates, or removes a connection between a team and an IdP group. When adding groups to a team, you must include all new and existing groups to avoid replacing existing groups with the new ones. Specifying an empty groups
array will remove all connections for a team.
Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see GitHub's products in the GitHub Help documentation.
\nNote
\n\nYou can also specify a team by org_id
and team_id
using the route PATCH /organizations/{org_id}/team/{team_id}/team-sync/group-mappings
.
Lists all users, in the order that they signed up on GitHub Enterprise Cloud. This list includes personal user accounts and organization accounts.
\nNote: Pagination is powered exclusively by the since
parameter. Use the Link header to get the URL for the next page of users.
Not modified
" } - ] + ], + "descriptionHTML": "Lists all users, in the order that they signed up on GitHub Enterprise Cloud. This list includes personal user accounts and organization accounts.
\nNote: Pagination is powered exclusively by the since
parameter. Use the Link header to get the URL for the next page of users.
Lists social media accounts for a user. This endpoint is accessible by anyone.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ] + ], + "descriptionHTML": "Lists social media accounts for a user. This endpoint is accessible by anyone.
" } ], "ssh-signing-keys": [ 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 8a77e35075aa..f4ebada4a17b 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 @@ -2555,13 +2555,13 @@ } ], "previews": [], + "descriptionHTML": "Gets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
OK
" } - ], - "descriptionHTML": "Gets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
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.\"
OAuth app tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
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.\"
OAuth app tokens and personal access tokens (classic) need the admin:enterprise
scope to use this endpoint.
Lists all secrets available in a repository without revealing their encrypted\nvalues.
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
OK
" } - ], - "descriptionHTML": "Lists all secrets available in a repository without revealing their encrypted\nvalues.
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
Gets a single environment secret without revealing its encrypted value.
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
OK
" } - ], - "descriptionHTML": "Gets a single environment secret without revealing its encrypted value.
\nAuthenticated users must have collaborator access to a repository to create, update, or read secrets.
\nOAuth tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
Updates the name
and visibility
of a self-hosted runner group in an enterprise.
OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
OK
" } - ], - "descriptionHTML": "Updates the name
and visibility
of a self-hosted runner group in an enterprise.
OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Lists the organizations with access to a self-hosted runner group.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
OK
" } - ], - "descriptionHTML": "Lists the organizations with access to a self-hosted runner group.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Adds a self-hosted runner to a runner group configured in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
No Content
" } - ], - "descriptionHTML": "Adds a self-hosted runner to a runner group configured in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
No Content
" } - ], - "descriptionHTML": "Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Gets a specific self-hosted runner configured in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
OK
" } - ], - "descriptionHTML": "Gets a specific self-hosted runner configured in an enterprise.
\nOAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise
scope to use this endpoint.
Creates a repository variable that you can reference in a GitHub Actions workflow.
\nAuthenticated users must have collaborator access to a repository to create, update, or read variables.
\nOAuth tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
Created
" } - ], - "descriptionHTML": "Creates a repository variable that you can reference in a GitHub Actions workflow.
\nAuthenticated users must have collaborator access to a repository to create, update, or read variables.
\nOAuth tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
List all workflow runs for a workflow. You can replace workflow_id
with the workflow file name. For example, you could use main.yaml
. You can use parameters to narrow the list of results. For more information about using parameters, see Parameters.
Anyone with read access to the repository can use this endpoint
\nOAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint with a private repository.
This endpoint will return up to 1,000 results for each search when using the following parameters: actor
, branch
, check_suite_id
, created
, event
, head_sha
, status
.
OK
" } - ], - "descriptionHTML": "List all workflow runs for a workflow. You can replace workflow_id
with the workflow file name. For example, you could use main.yaml
. You can use parameters to narrow the list of results. For more information about using parameters, see Parameters.
Anyone with read access to the repository can use this endpoint
\nOAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint with a private repository.
This endpoint will return up to 1,000 results for each search when using the following parameters: actor
, branch
, check_suite_id
, created
, event
, head_sha
, status
.
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.
\nuri_template
. For more information, see \"Hypermedia.\"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.\"
Note
\n\nPrivate feeds are only returned when authenticating via Basic Auth since current feed URIs use the older, non revocable auth tokens.
\nOK
" } - ], - "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.
\nuri_template
. For more information, see \"Hypermedia.\"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.\"
Note
\n\nPrivate feeds are only returned when authenticating via Basic Auth since current feed URIs use the older, non revocable auth tokens.
\nCreates a new check run for a specific commit in a repository.
\nTo create a check run, you must use a GitHub App. OAuth apps and authenticated users are not able to create a check suite.
\nIn 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.
\nNote
\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.
Created
" } - ], - "descriptionHTML": "Creates a new check run for a specific commit in a repository.
\nTo create a check run, you must use a GitHub App. OAuth apps and authenticated users are not able to create a check suite.
\nIn 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.
\nNote
\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.
Lists the environments for a repository.
\nAnyone with read access to the repository can use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint with a private repository.
OK
" } - ], - "descriptionHTML": "Lists the environments for a repository.
\nAnyone with read access to the repository can use this endpoint.
\nOAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint with a private repository.
OK
" } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -209569,13 +209569,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -211238,13 +211238,13 @@ } ], "previews": [], + "descriptionHTML": "Lists one audit log stream configuration via a stream ID.
\nWhen using this endpoint, you must encrypt the credentials following the same encryption steps as outlined in the guide on encrypting secrets. See \"Encrypting secrets for the REST API.\"
", "statusCodes": [ { "httpStatusCode": "200", "description": "Lists one audit log stream configuration via stream ID.
" } - ], - "descriptionHTML": "Lists one audit log stream configuration via a stream ID.
\nWhen using this endpoint, you must encrypt the credentials following the same encryption steps as outlined in the guide on encrypting secrets. See \"Encrypting secrets for the REST API.\"
" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -213804,13 +213804,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ], - "descriptionHTML": "" + ] } ], "manage-ghes": [ @@ -302035,13 +302035,13 @@ } ], "previews": [], + "descriptionHTML": "Updates a label using the given label name.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ], - "descriptionHTML": "Updates a label using the given label name.
" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -368610,13 +368610,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 .\"
You must be an organization owner to use this endpoint.
\nOAuth 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.
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 .\"
You must be an organization owner to use this endpoint.
\nOAuth 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.
Gets a specific package version in an organization.
\nOAuth app tokens and personal access tokens (classic) need the read:packages
scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"
OK
" } - ], - "descriptionHTML": "Gets a specific package version in an organization.
\nOAuth app tokens and personal access tokens (classic) need the read:packages
scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"
Gets the org public key, which is needed to encrypt private registry secrets. You need to encrypt a secret before you can create or update secrets.
\nOAuth tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
Resource not found
" } - ], - "descriptionHTML": "Gets the org public key, which is needed to encrypt private registry secrets. You need to encrypt a secret before you can create or update secrets.
\nOAuth tokens and personal access tokens (classic) need the admin:org
scope to use this endpoint.
Lists all reviews for a specified pull request. The list of reviews returns in chronological order.
\nThis endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/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.application/vnd.github-commitcomment.text+json
: Returns a text only representation of the markdown body. Response will include body_text
.application/vnd.github-commitcomment.html+json
: Returns HTML rendered from the body's markdown. Response will include body_html
.application/vnd.github-commitcomment.full+json
: Returns raw, text, and HTML representations. Response will include body
, body_text
, and body_html
.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.
\nThis endpoint supports the following custom media types. For more information, see \"Media types.\"
\napplication/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.application/vnd.github-commitcomment.text+json
: Returns a text only representation of the markdown body. Response will include body_text
.application/vnd.github-commitcomment.html+json
: Returns HTML rendered from the body's markdown. Response will include body_html
.application/vnd.github-commitcomment.full+json
: Returns raw, text, and HTML representations. Response will include body
, body_text
, and body_html
.Gets a team using the team's slug
. To create the slug
, GitHub Enterprise Server replaces special characters in the name
string, changes all words to lowercase, and replaces spaces with a -
separator. For example, \"My TEam Näme\"
would become my-team-name
.
Note
\n\nYou can also specify a team by org_id
and team_id
using the route GET /organizations/{org_id}/team/{team_id}
.
Resource not found
" } - ], - "descriptionHTML": "Gets a team using the team's slug
. To create the slug
, GitHub Enterprise Server replaces special characters in the name
string, changes all words to lowercase, and replaces spaces with a -
separator. For example, \"My TEam Näme\"
would become my-team-name
.
Note
\n\nYou can also specify a team by org_id
and team_id
using the route GET /organizations/{org_id}/team/{team_id}
.
Lists the child teams of the team specified by {team_slug}
.
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
.
if child teams exist
" } - ], - "descriptionHTML": "Lists the child teams of the team specified by {team_slug}
.
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
.
Deletes a connection between a team and an external group.
\nYou can manage team membership with your IdP using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see GitHub's products in the GitHub Help documentation.
", "statusCodes": [ { "httpStatusCode": "204", "description": "No Content
" } - ], - "descriptionHTML": "Deletes a connection between a team and an external group.
\nYou can manage team membership with your IdP using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see GitHub's products in the GitHub Help documentation.
" + ] } ], "members": [ @@ -550079,13 +550079,13 @@ } ], "previews": [], + "descriptionHTML": "Lists the verified public SSH keys for a user. This is accessible by anyone.
", "statusCodes": [ { "httpStatusCode": "200", "description": "OK
" } - ], - "descriptionHTML": "Lists the verified public SSH keys for a user. This is accessible by anyone.
" + ] } ], "social-accounts": [ diff --git a/src/search/components/helpers/execute-search-actions.ts b/src/search/components/helpers/execute-search-actions.ts index 5d7dffa4da4c..e6aa9a43bc1c 100644 --- a/src/search/components/helpers/execute-search-actions.ts +++ b/src/search/components/helpers/execute-search-actions.ts @@ -49,6 +49,7 @@ export async function executeAISearch(version: string, query: string, debug = fa const body = { query, version, + client_name: 'docs.github.com-client', ...(debug && { debug: '1' }), } @@ -80,6 +81,9 @@ export async function executeCombinedSearch( params.set('debug', '1') } + // Add client_name to identify requests from our frontend + params.set('client_name', 'docs.github.com-client') + // Always fetch 4 results for autocomplete params.set('size', '4') diff --git a/src/search/lib/helpers/external-search-analytics.ts b/src/search/lib/helpers/external-search-analytics.ts index e6e4754d8246..74b4ca2c68ad 100644 --- a/src/search/lib/helpers/external-search-analytics.ts +++ b/src/search/lib/helpers/external-search-analytics.ts @@ -12,27 +12,40 @@ export async function handleExternalSearchAnalytics( const host = req.headers['x-host'] || req.headers.host const normalizedHost = stripPort(host as string) - // Skip analytics entirely for production and internal staging environments - if ( - normalizedHost === 'docs.github.com' || - normalizedHost.endsWith('.github.net') || - normalizedHost.endsWith('.githubapp.com') - ) { - return null - } + // Check if this is likely an external API call rather than a browser request + const isLikelyExternalAPI = isExternalAPIRequest(req) - // For localhost, send analytics but auto-set client_name if not provided + // Get client_name from query or body let client_name = req.query.client_name || req.body?.client_name - if (normalizedHost === 'localhost' && !client_name) { - client_name = 'localhost' + + // Rule 1: Skip analytics for browser requests from our own frontend + if (!isLikelyExternalAPI && client_name === 'docs.github.com-client') { + return null } - // For all other external requests, require explicit client_name - if (!client_name) { - return { - status: 400, - error: "Missing required parameter 'client_name' for external requests", + // Rule 2: Send analytics for any request with a client_name that's not 'docs.github.com-client' + // (This includes partner APIs and other external clients) + if (client_name && client_name !== 'docs.github.com-client') { + // Analytics will be sent at the end of this function + } + // Rule 3: For requests without client_name, require it for external API requests + else if (!client_name) { + if (isLikelyExternalAPI) { + return { + status: 400, + error: "Missing required parameter 'client_name' for external requests", + } } + // For browser requests without client_name to internal environments, skip analytics + else if (normalizedHost.endsWith('.github.net') || normalizedHost.endsWith('.githubapp.com')) { + return null + } + // For localhost development without client_name, we'll still send analytics below + } + + // For localhost, ensure we have a client_name for analytics + if (normalizedHost === 'localhost' && !client_name) { + client_name = 'localhost' } // Send search event with client identifier @@ -71,19 +84,16 @@ export async function handleExternalSearchAnalytics( /** * Determines if a host should bypass client_name requirement for analytics - * Returns true if the host is docs.github.com or ends with github.net or githubapp.com - * (for production and internal staging environments) + * Returns true if the host ends with github.net or githubapp.com + * (for internal staging environments) + * Note: docs.github.com is removed since normalizedHost will always be docs.github.com in production * Note: localhost is NOT included here as it should send analytics with auto-set client_name */ export function shouldBypassClientNameRequirement(host: string | undefined): boolean { if (!host) return false const normalizedHost = stripPort(host) - return ( - normalizedHost === 'docs.github.com' || - normalizedHost.endsWith('.github.net') || - normalizedHost.endsWith('.githubapp.com') - ) + return normalizedHost.endsWith('.github.net') || normalizedHost.endsWith('.githubapp.com') } /** @@ -93,3 +103,42 @@ function stripPort(host: string): string { const [hostname] = host.split(':') return hostname } + +interface ExternalAPIRequestLike { + headers: Record