diff --git a/content/billing/concepts/product-billing/github-advanced-security.md b/content/billing/concepts/product-billing/github-advanced-security.md index 15a537177abe..7c43d481e215 100644 --- a/content/billing/concepts/product-billing/github-advanced-security.md +++ b/content/billing/concepts/product-billing/github-advanced-security.md @@ -53,7 +53,7 @@ Each **active committer** to at least one repository with an {% data variables.p * **Active committers** are committers who contributed to at least one repository and have a {% data variables.product.prodname_team %} or {% data variables.product.prodname_enterprise %} license with your organization or enterprise. That is, they are also a member, an enterprise-managed user, an external collaborator, or have a pending invitation to join your organization or enterprise. * **Unique committers** is the number of active committers who contributed only to one repository, or only to repositories in one organization. You can free up this number of licenses by disabling {% data variables.product.prodname_GH_cs_or_sp %} for that repository or organization. -> [!NOTE] When a repository is migrated to GitHub, GitHub Advanced Security only consumes licenses for commits and pushes made after migration, rather than considering all historic contributions from before the migration. +> [!NOTE] When a repository is migrated to {% data variables.product.github %} using {% data variables.product.prodname_importer_proper_name %}, {% data variables.product.prodname_GHAS %} only consumes licenses for commits and pushes made _after_ migration. Historic contributions from _before_ the migration are not considered. For more information, see [AUTOTITLE](/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer). {% ifversion security-configurations %}You can see the active and unique committers to an organization on the Global settings page for {% data variables.product.UI_advanced_security %}. Under "{% data variables.product.prodname_secret_protection %} repositories" and "{% data variables.product.prodname_code_security %} repositories", summaries and repository-level details are reported. See [AUTOTITLE](/code-security/securing-your-organization/enabling-security-features-in-your-organization/configuring-global-security-settings-for-your-organization).{% endif %} diff --git a/content/copilot/concepts/context/mcp.md b/content/copilot/concepts/context/mcp.md index e760130fdeb6..5b73f0555d6e 100644 --- a/content/copilot/concepts/context/mcp.md +++ b/content/copilot/concepts/context/mcp.md @@ -46,6 +46,14 @@ To learn how to configure and use MCP servers with {% data variables.copilot.cop {% data reusables.copilot.mcp.mcp-policy %} +## Availability + +There is currently broad support for local MCP servers in clients such as {% data variables.product.prodname_vscode %}, JetBrains IDEs, XCode, and others. + +Support for remote MCP servers is growing, with editors like {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, JetBrains IDEs, Xcode, Eclipse, and Cursor providing this functionality with OAuth or PAT, and Windsurf supporting PAT only. + +To find out if your preferred editor supports remote MCP servers, check the documentation for your specific editor. + ## About the {% data variables.product.github %} MCP server The {% data variables.product.github %} MCP server is a Model Context Protocol (MCP) server provided and maintained by {% data variables.product.github %}. @@ -57,30 +65,37 @@ The {% data variables.product.github %} MCP server is a Model Context Protocol ( * Enable cloud-based workflows that work from any device, without local setup. * Invoke {% data variables.product.github %} tools, such as {% data variables.copilot.copilot_coding_agent %} (requires {% data variables.product.prodname_copilot %} subscription) and {% data variables.product.prodname_code_scanning %} (requires {% data variables.product.prodname_GHAS %} subscription), to assist with code generation and security analysis. -For all public repositories, and private repositories covered by {% data variables.product.prodname_GHAS %}, interactions with the {% data variables.product.github %} MCP server are secured by push protection, which blocks secrets from being included in AI-generated responses and prevents you from exposing secrets through any actions you perform using the server, such as creating an issue. See [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-and-the-github-mcp-server). +To learn how to set up and use the {% data variables.product.github %} MCP server, see [AUTOTITLE](/copilot/how-tos/context/model-context-protocol/using-the-github-mcp-server). -You can access the {% data variables.product.github %} MCP server remotely through {% data variables.copilot.copilot_chat_short %} in {% data variables.product.github %}, {% data variables.product.prodname_vscode %}, or other editors that support remote MCP; or you can run it locally in any MCP-compatible editor, allowing you to choose between the convenience of a hosted solution or the customizability of a self-hosted setup. +### Remote access -If you want to utilize the remote {% data variables.product.github %} MCP server, you can do so in a few steps, without any local setup. This is particularly useful for users who want to quickly leverage {% data variables.product.github %}’s AI capabilities without the overhead of managing a local MCP server. +You can access the {% data variables.product.github %} MCP server remotely through {% data variables.copilot.copilot_chat_short %} in {% data variables.product.prodname_vscode %} without any local setup. The remote server has access to additional toolsets only available in the remote {% data variables.product.github %} MCP server. For a list of such tools, see [Additional toolsets](https://github.com/github/github-mcp-server?tab=readme-ov-file#additional-toolsets-in-remote-github-mcp-server) in the `github/github-mcp-server` repository. -Running the {% data variables.product.github %} MCP server locally requires a bit more setup, but it allows for greater customization and control over your AI interactions. +The {% data variables.product.github %} MCP server can also run locally in any MCP-compatible editor, if necessary. -To learn how to set up and use the {% data variables.product.github %} MCP server, see [AUTOTITLE](/copilot/how-tos/context/model-context-protocol/using-the-github-mcp-server). +### Toolset customization -## About the {% data variables.product.github %} MCP Registry +> [!IMPORTANT] +> Always review the {% data variables.product.github %} MCP server repository at [github/github-mcp-server](https://github.com/github/github-mcp-server) for the latest toolsets and authoritative configuration guidance. -The {% data variables.product.github %} MCP Registry is a curated list of MCP servers from partners and the community. You can use the registry to discover new MCP servers and find ones that meet your specific needs. See [the {% data variables.product.github %} MCP Registry](https://github.com/mcp). +The {% data variables.product.github %} MCP server supports enabling or disabling specific groups of functionalities via toolsets. Toolsets allow you to control which {% data variables.product.github %} API capabilities are available to your AI tools. ->[!NOTE] -> The {% data variables.product.github %} MCP Registry is currently in {% data variables.release-phases.public_preview %} and subject to change. +Enabling only the toolsets you need improves your AI assistant's performance and security. Fewer tools means better tool selection accuracy and fewer errors. Disabling unused toolsets also frees up tokens in the AI's context window. -## Availability +Toolsets do not only include tools, but also relevant MCP resources and prompts where applicable. -There is currently broad support for local MCP servers in clients such as {% data variables.product.prodname_vscode %}, JetBrains IDEs, XCode, and others. +To learn how to configure toolsets for the {% data variables.product.github %} MCP server, see [AUTOTITLE](/copilot/how-tos/context/use-mcp/configure-toolsets). -Support for remote MCP servers is growing, with editors like {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, JetBrains IDEs, Xcode, Eclipse, and Cursor providing this functionality with OAuth or PAT, and Windsurf supporting PAT only. +### Security -To find out if your preferred editor supports remote MCP servers, check the documentation for your specific editor. +For all public repositories, and private repositories covered by {% data variables.product.prodname_GHAS %}, interactions with the {% data variables.product.github %} MCP server are secured by push protection, which blocks secrets from being included in AI-generated responses and prevents you from exposing secrets through any actions you perform using the server, such as creating an issue. For more information, see [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-and-the-github-mcp-server). + +## About the {% data variables.product.github %} MCP Registry + +The {% data variables.product.github %} MCP Registry is a curated list of MCP servers from partners and the community. You can use the registry to discover new MCP servers and find ones that meet your specific needs. See [the {% data variables.product.github %} MCP Registry](https://github.com/mcp). + +>[!NOTE] +> The {% data variables.product.github %} MCP Registry is currently in {% data variables.release-phases.public_preview %} and subject to change. ## Next steps diff --git a/content/copilot/concepts/copilot-metrics.md b/content/copilot/concepts/copilot-metrics.md index 16cc2be83f7f..d39a8995eba3 100644 --- a/content/copilot/concepts/copilot-metrics.md +++ b/content/copilot/concepts/copilot-metrics.md @@ -19,15 +19,21 @@ redirect_from: {% data reusables.copilot.usage-metrics-preview %} +## About {% data variables.product.prodname_copilot_short %} usage metrics + {% data variables.product.prodname_copilot_short %} usage metrics help key stakeholders and decision-makers understand how their teams are adopting and using {% data variables.product.prodname_copilot_short %}. By tracking usage patterns across the enterprise, you can measure engagement, identify opportunities to increase value, and make data-driven decisions about enablement and rollout. Metrics are available through: -* The {% data variables.product.prodname_copilot_short %} usage metrics APIs, which provide detailed, user-level data you can export for further analysis. +* The {% data variables.product.prodname_copilot_short %} usage metrics APIs, which provide detailed, exportable data at the enterprise, organization, and user levels. * The {% data variables.product.prodname_copilot_short %} usage metrics dashboard, which visualizes 28-day usage trends across your enterprise. * The code generation dashboard, which breaks down how code is being generated by users and agents across your enterprise. * The {% data variables.product.prodname_copilot_short %} usage metrics NDJSON export, which offers raw data for custom BI tools or long-term storage. +### Organization-level metrics + +Organization-level metrics are **only available through the APIs**. Both dashboards provide enterprise-level reporting. + For a complete list of available metrics and data fields, see [AUTOTITLE](/copilot/reference/copilot-usage-metrics). ## Which usage is included? @@ -43,6 +49,22 @@ This means the data **does not include** activity from other {% data variables.p License and seat management data are not included in {% data variables.product.prodname_copilot_short %} usage metrics reports. To view or manage license assignments, use the {% data variables.product.prodname_copilot_short %} user management API, which is the source of truth for license and seat information. See [AUTOTITLE](/rest/copilot/copilot-user-management). +## How are metrics attributed across organizations? + +Organization-level {% data variables.product.prodname_copilot_short %} usage metrics are based on organization membership, not on where individual actions occur. To appear in an enterprise’s metrics, a user must have an active {% data variables.product.prodname_copilot_short %} seat assigned within that enterprise (in any organization that belongs to the enterprise). As a result, a single user’s usage may appear in multiple organization dashboards, while that same user is counted only once in the enterprise-level total. Organization-level analytics are intended for visibility into adoption and usage within an organization and are not designed to be directly compared to enterprise-level totals. + +Organization-level {% data variables.product.prodname_copilot_short %} analytics are available starting December 12, 2025. This is the first date for which organization-level reports are provided. + + +Once a user has a seat in the enterprise, their usage is attributed to **every organization they belong to**, regardless of where the seat is assigned. + +This means: + +* If licenses are assigned in a dedicated “shell” organization for administrative purposes within the enterprise, users still appear in the metrics for all other organizations in the enterprise they belong to. +* If a user also has a {% data variables.product.prodname_copilot_short %} seat in a **separate organization outside the enterprise**, their activity is still included in the enterprise’s organization-level metrics **as long as they have at least one seat within the enterprise**. + +In short: users must be licensed somewhere in the enterprise to appear in its metrics. Once they are, metrics reflect where they work (their organization membership), not which organization provides the {% data variables.product.prodname_copilot_short %} seat or where the activity originated. + ## Supported IDEs To be included in the {% data variables.product.prodname_copilot_short %} usage metrics, end users must use one of the following IDEs and {% data variables.copilot.copilot_chat_short %} extension versions. @@ -94,4 +116,4 @@ Now that you understand what each {% data variables.product.prodname_copilot_sho * To view adoption and usage trends across your enterprise, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/view-usage-and-adoption). * To analyze how code is being generated by users and agents, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/view-code-generation). -* To access these metrics programmatically, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). +* To access enterprise-, organization-, and user-level metrics programmatically, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/view-code-generation.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/view-code-generation.md index 95af50ac41fa..61ad9fd54f88 100644 --- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/view-code-generation.md +++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/view-code-generation.md @@ -24,6 +24,8 @@ The code generation dashboard shows how {% data variables.product.prodname_copil {% data reusables.copilot.access-copilot-metrics-dashboard %} 1. In the left sidebar, click **Code generation**. +{% data reusables.copilot.org-copilot-usage-metrics %} + ## What you can view The dashboard shows aggregated code generation activity across your enterprise, including: @@ -39,4 +41,4 @@ For a full list of available metrics and definitions, see [AUTOTITLE](/copilot/r * To explore adoption and usage trends across your enterprise, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/view-usage-and-adoption). * To understand how Lines of Code (LoC) metrics are measured and what affects their accuracy and coverage, see [AUTOTITLE](/copilot/reference/copilot-usage-metrics/lines-of-code-metrics). -* To access usage data programmatically, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). +* To access enterprise-, organization-, and user-level usage data programmatically, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/view-usage-and-adoption.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/view-usage-and-adoption.md index 776e0404230e..c2dc27ac7246 100644 --- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/view-usage-and-adoption.md +++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/view-usage-and-adoption.md @@ -24,7 +24,7 @@ After your initial rollout, the {% data variables.product.prodname_copilot_short {% data reusables.copilot.access-copilot-metrics-dashboard %} 1. In the left sidebar, click **{% data variables.product.prodname_copilot_short %} usage**. -Data in the dashboard is based only on IDE telemetry and may appear up to three full UTC days behind the current date. See [AUTOTITLE](/copilot/concepts/copilot-metrics#data-freshness). +Data in the dashboard reports data at the enterprise level, is based only on IDE telemetry, and may appear up to three full UTC days behind the current date. See [AUTOTITLE](/copilot/concepts/copilot-metrics). ## Using {% data variables.copilot.copilot_chat_short %} to analyze exported data @@ -32,7 +32,7 @@ For deeper analysis, you can export NDJSON reports from the dashboard and use {% ```copilot copy prompt * Which users have `user_initiated_interaction_count` > 0 but low `code_acceptance_activity_count`? -* Are there specific organizations or teams with lower adoption rates? +* Are there specific teams with lower adoption rates? ``` ## Next steps diff --git a/content/copilot/how-tos/provide-context/use-mcp/configure-toolsets.md b/content/copilot/how-tos/provide-context/use-mcp/configure-toolsets.md new file mode 100644 index 000000000000..e809de04af36 --- /dev/null +++ b/content/copilot/how-tos/provide-context/use-mcp/configure-toolsets.md @@ -0,0 +1,46 @@ +--- +title: Configuring toolsets for the GitHub MCP Server +intro: 'Learn how to configure toolsets and tools for the {% data variables.product.github %} MCP server for fine-grained control and optimized performance.' +shortTitle: Configure toolsets +versions: + feature: copilot +defaultTool: vscode +topics: + - Copilot +redirect_from: + - /copilot/how-tos/context/use-mcp/configure-toolsets +contentType: how-tos +--- + +The {% data variables.product.github %} MCP server includes default toolsets (`repos`, `issues`, and `pull_requests`) that are enabled automatically. You can customize toolset configuration by: + +* **Enabling individual toolsets** such as `actions`, `code_security`, or `secret_protection` +* **Using special keywords** like `all` to enable every available toolset, or [`default`](https://github.com/github/github-mcp-server?tab=readme-ov-file#default-toolset) to include the standard set alongside others (for example, `default,stargazers`) +* **Accessing remote-only toolsets** such as `copilot` (for {% data variables.copilot.copilot_coding_agent %}) and `github_support_docs_search`, which are only available on the remote MCP server +* **Selecting specific tools** for granular control when you want to exclude specific tools or combine toolsets with individual tools + +For a complete list of available toolsets, see [Tools](https://github.com/github/github-mcp-server/blob/main/README.md#tools) in the `github/github-mcp-server` repository. For configuration examples, see [Server configuration](https://github.com/github/github-mcp-server/blob/main/docs/server-configuration.md). For a full introduction to the {% data variables.product.github %} MCP server and an overview of MCP, see [AUTOTITLE](/copilot/concepts/context/mcp). + +## Configuring toolsets for the remote MCP server + +You can configure toolsets for the remote {% data variables.product.github %} MCP server using: + +* **URL path parameters** when enabling a single toolset +* **HTTP headers** when enabling multiple toolsets + +For detailed setup instructions, see [Remote {% data variables.product.github %} MCP server](https://github.com/github/github-mcp-server?tab=readme-ov-file#remote-github-mcp-server) and [Remote server configuration](https://github.com/github/github-mcp-server/blob/main/docs/remote-server.md) in the `github/github-mcp-server` repository. + +## Configuring toolsets for the local MCP server + +You can configure toolsets for the local {% data variables.product.github %} MCP server using: + +* **Command-line flags** +* **Environment variables** (these take precedence over command-line flags) + +For detailed setup instructions, see [Local {% data variables.product.github %} MCP server](https://github.com/github/github-mcp-server?tab=readme-ov-file#local-github-mcp-server) and [Tool configuration](https://github.com/github/github-mcp-server?tab=readme-ov-file#tool-configuration) in the `github/github-mcp-server` repository. + +## Further reading + +* [AUTOTITLE](/copilot/how-tos/provide-context/use-mcp/set-up-the-github-mcp-server) +* [AUTOTITLE](/copilot/how-tos/provide-context/use-mcp/use-the-github-mcp-server) +* [AUTOTITLE](/copilot/how-tos/provide-context/use-mcp/configure-toolsets) diff --git a/content/copilot/how-tos/provide-context/use-mcp/enterprise-configuration.md b/content/copilot/how-tos/provide-context/use-mcp/enterprise-configuration.md new file mode 100644 index 000000000000..4470411d4f8b --- /dev/null +++ b/content/copilot/how-tos/provide-context/use-mcp/enterprise-configuration.md @@ -0,0 +1,648 @@ +--- +title: Configuring the GitHub MCP Server for GitHub Enterprise +intro: 'Learn how to configure the GitHub Model Context Protocol (MCP) server to work with {% data variables.product.prodname_ghe_server %} or {% data variables.enterprise.data_residency %}.' +shortTitle: Enterprise configuration +versions: + feature: copilot +defaultTool: vscode +topics: + - Copilot +contentType: how-tos +--- + +The {% data variables.product.github %} MCP server can be configured to work with {% data variables.product.prodname_ghe_server %} and {% data variables.enterprise.data_residency %}. The configuration steps differ depending on whether you are using the remote or local MCP server. + +## About enterprise MCP server configuration + +The {% data variables.product.github %} MCP server supports two enterprise deployment types: + +* **[{% data variables.enterprise.data_residency %}](#configuring-the-remote-mcp-server-for-github-enterprise-cloud-with-data-residency)**: Supports both remote and local MCP server configurations +* **[{% data variables.product.prodname_ghe_server %}](#configuring-the-local-mcp-server-for-enterprise)**: Supports **only local MCP server configuration** + +> [!IMPORTANT] +> {% data variables.product.prodname_ghe_server %} does **not** support remote MCP server hosting. If you are using {% data variables.product.prodname_ghe_server %}, you **must** use the local MCP server configuration described in [Configuring the local MCP server for enterprise](#configuring-the-local-mcp-server-for-enterprise). Skip the remote MCP server configuration section below. + +## Prerequisites + +* A {% data variables.product.prodname_ghe_server %} instance or {% data variables.product.prodname_ghe_cloud %} account with {% data variables.enterprise.data_residency_short %} +* The {% data variables.product.github %} MCP server configured in your editor. See [AUTOTITLE](/copilot/how-tos/provide-context/use-mcp/set-up-the-github-mcp-server). + +## Configuring the remote MCP server for {% data variables.enterprise.data_residency %} + +> [!NOTE] +> This section applies **only** to {% data variables.enterprise.data_residency %}. If you are using {% data variables.product.prodname_ghe_server %}, skip to [Configuring the local MCP server for enterprise](#configuring-the-local-mcp-server-for-enterprise). + +{% vscode %} + +{% data variables.enterprise.data_residency %} can use the remote MCP server. To configure it, you need to update the MCP server URL to point to your {% data variables.product.prodname_ghe_cloud %} instance. + +For example, if your {% data variables.product.prodname_ghe_cloud %} instance is `https://octocorp.ghe.com`, the MCP server URL would be `https://copilot-api.octocorp.ghe.com/mcp`. + +1. In {% data variables.product.prodname_vscode %}, open the command palette by pressing Ctrl+Shift+P (Windows/Linux) / Command+Shift+P (Mac). +1. Type and select **MCP: Open User Configuration**. +1. In the settings file, locate the `servers` section. If you have already configured the {% data variables.product.github %} MCP server, you will see a `github` entry. +1. Update the `url` field to point to your {% data variables.product.prodname_ghe_cloud %} instance. + + **Option A: With PAT authentication** + + ```json copy + { + "servers": { + "github": { + "type": "http", + "url": "https://copilot-api.{% data variables.enterprise.data_residency_domain %}/mcp", + "headers": { + "Authorization": "Bearer ${input:github_mcp_pat}" + } + } + }, + "inputs": [ + { + "type": "promptString", + "id": "github_mcp_pat", + "description": "GitHub PAT", + "password": true + } + ] + } + ``` + + **Option B: With OAuth authentication** + + ```json copy + { + "servers": { + "github": { + "type": "http", + "url": "https://copilot-api.{% data variables.enterprise.data_residency_domain %}/mcp" + } + } + } + ``` + + Replace `{% data variables.enterprise.data_residency_domain %}` with your {% data variables.enterprise.data_residency_site %} subdomain. + +1. Save the file. +1. When using OAuth with {% data variables.enterprise.data_residency %}, configure your {% data variables.product.prodname_vscode_shortname %} settings to point to your {% data variables.product.prodname_ghe_cloud %} instance. Add the following to your [{% data variables.product.prodname_vscode_shortname %} user settings](https://code.visualstudio.com/docs/configure/settings#_user-settings): + + ```json + { + "github-enterprise.uri": "https://copilot-api.{% data variables.enterprise.data_residency_domain %}/mcp" + } + ``` + +1. Restart {% data variables.product.prodname_vscode %} or reload the window for the changes to take effect. + +{% endvscode %} + +{% visualstudio %} + +{% data variables.product.prodname_ghe_cloud %} with data residency can use the remote MCP server. To configure it, you need to update the MCP server URL to point to your {% data variables.product.prodname_ghe_cloud %} instance. + +For example, if your {% data variables.product.prodname_ghe_cloud %} instance is `https://octocorp.ghe.com`, the MCP server URL would be `https://copilot-api.octocorp.ghe.com/mcp`. + +1. In the {% data variables.product.prodname_vs %} menu bar, click **View**, then click **{% data variables.copilot.copilot_chat %}**. +1. At the bottom of the chat panel, select **Agent** from the mode dropdown. +1. In the {% data variables.copilot.copilot_chat_short %} window, click the tools icon, then click the plus icon in the tool picker window. +1. In the "Configure MCP server" pop-up window, fill out the fields. + 1. For "Server ID", type `github`. + 1. For "Type", select "HTTP/SSE" from the dropdown. + 1. For "URL", type `https://copilot-api.YOURSUBDOMAIN.ghe.com/mcp`, replacing `YOURSUBDOMAIN` with your {% data variables.product.prodname_ghe_cloud %} subdomain. + 1. Add a new header under "Headers", called "Authorization" and set to the value `Bearer YOUR_GITHUB_PAT`, replacing "YOUR_GITHUB_PAT" with your {% data variables.product.pat_generic %}. +1. Click **Save**. + +{% endvisualstudio %} + +{% jetbrains %} + +{% data variables.product.prodname_ghe_cloud %} with data residency can use the remote MCP server. To configure it, you need to update the MCP server URL to point to your {% data variables.product.prodname_ghe_cloud %} instance. + +For example, if your {% data variables.product.prodname_ghe_cloud %} instance is `https://octocorp.ghe.com`, the MCP server URL would be `https://copilot-api.octocorp.ghe.com/mcp`. + +{% data reusables.copilot.jetbrains-mcp-setup-steps %} +1. In the `mcp.json` file, add the following configuration, replacing `YOURSUBDOMAIN` with your {% data variables.product.prodname_ghe_cloud %} subdomain and `YOUR_GITHUB_PAT` with your {% data variables.product.pat_generic %}: + + ```json copy + { + "servers": { + "github": { + "url": "https://copilot-api.YOURSUBDOMAIN.ghe.com/mcp", + "requestInit": { + "headers": { + "Authorization": "Bearer YOUR_GITHUB_PAT" + } + } + } + } + } + ``` + +{% endjetbrains %} + +{% xcode %} + +{% data variables.product.prodname_ghe_cloud %} with data residency can use the remote MCP server. To configure it, you need to update the MCP server URL to point to your {% data variables.product.prodname_ghe_cloud %} instance. + +For example, if your {% data variables.product.prodname_ghe_cloud %} instance is `https://octocorp.ghe.com`, the MCP server URL would be `https://copilot-api.octocorp.ghe.com/mcp`. + +{% data reusables.copilot.xcode-mcp-setup-steps %} +1. Add the following configuration, replacing `YOURSUBDOMAIN` with your {% data variables.product.prodname_ghe_cloud %} subdomain and `YOUR_GITHUB_PAT` with your {% data variables.product.pat_generic %}: + + ```json copy + { + "servers": { + "github": { + "url": "https://copilot-api.YOURSUBDOMAIN.ghe.com/mcp", + "requestInit": { + "headers": { + "Authorization": "Bearer YOUR_GITHUB_PAT" + } + } + } + } + } + ``` + +{% endxcode %} + +{% eclipse %} + +{% data variables.product.prodname_ghe_cloud %} with data residency can use the remote MCP server. To configure it, you need to update the MCP server URL to point to your {% data variables.product.prodname_ghe_cloud %} instance. + +For example, if your {% data variables.product.prodname_ghe_cloud %} instance is `https://octocorp.ghe.com`, the MCP server URL would be `https://copilot-api.octocorp.ghe.com/mcp`. + +{% data reusables.copilot.eclipse-mcp-setup-steps %} +1. Add the following configuration under "Server Configurations", replacing `YOURSUBDOMAIN` with your {% data variables.product.prodname_ghe_cloud %} subdomain and `YOUR_GITHUB_PAT` with your {% data variables.product.pat_generic %}: + + ```json copy + { + "servers": { + "github": { + "url": "https://copilot-api.YOURSUBDOMAIN.ghe.com/mcp", + "requestInit": { + "headers": { + "Authorization": "Bearer YOUR_GITHUB_PAT" + } + } + } + } + } + ``` + +1. Click **Apply**. + +{% endeclipse %} + +## Configuring the local MCP server for enterprise + +Both {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %} with data residency support the local MCP server. You can configure the local server using either the `GITHUB_HOST` environment variable or the `--gh-host` command-line flag. + +### Important considerations + +* **For {% data variables.product.prodname_ghe_server %}**: Prefix the hostname with the `https://` URI scheme, as it otherwise defaults to `http://`, which {% data variables.product.prodname_ghe_server %} does not support. +* **For {% data variables.product.prodname_ghe_cloud %} with data residency**: Use `https://YOURSUBDOMAIN.ghe.com` as the hostname. + +### Configuration with Docker + +{% vscode %} + +To configure the local MCP server with Docker in {% data variables.product.prodname_vscode %}: + +1. In {% data variables.product.prodname_vscode %}, open the command palette by pressing Ctrl+Shift+P (Windows/Linux) / Command+Shift+P (Mac). +1. Type and select **MCP: Open User Configuration**. +1. In the settings file, locate the `servers` section or create it if it doesn't exist. +1. Add the following configuration: + + **For {% data variables.product.prodname_ghe_server %}:** + + ```json copy + { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "GitHub PAT", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "-e", + "GITHUB_HOST", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}", + "GITHUB_HOST": "https://YOUR_GHES_HOSTNAME" + } + } + } + } + ``` + + Replace `YOUR_GHES_HOSTNAME` with your {% data variables.product.prodname_ghe_server %} hostname (for example, `https://github.example.com`). + + **For {% data variables.product.prodname_ghe_cloud %} with data residency:** + + ```json copy + { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "GitHub PAT", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "-e", + "GITHUB_HOST", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}", + "GITHUB_HOST": "https://YOURSUBDOMAIN.ghe.com" + } + } + } + } + ``` + + Replace `YOURSUBDOMAIN` with your {% data variables.product.prodname_ghe_cloud %} subdomain. + +1. Save the file. +1. Restart {% data variables.product.prodname_vscode %} or reload the window for the changes to take effect. + +{% endvscode %} + +{% visualstudio %} + +To configure the local MCP server with Docker in {% data variables.product.prodname_vs %}, you need to manually edit the `mcp.json` file. + +1. Open the `mcp.json` file in {% data variables.product.prodname_vs %}. The file is typically located in your user profile directory. +1. Add the following configuration: + + **For {% data variables.product.prodname_ghe_server %}:** + + ```json copy + { + "mcp": { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "GitHub PAT", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "-e", + "GITHUB_HOST", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}", + "GITHUB_HOST": "https://YOUR_GHES_HOSTNAME" + } + } + } + } + } + ``` + + Replace `YOUR_GHES_HOSTNAME` with your {% data variables.product.prodname_ghe_server %} hostname (for example, `https://github.example.com`). + + **For {% data variables.product.prodname_ghe_cloud %} with data residency:** + + ```json copy + { + "mcp": { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "GitHub PAT", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "-e", + "GITHUB_HOST", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}", + "GITHUB_HOST": "https://YOURSUBDOMAIN.ghe.com" + } + } + } + } + } + ``` + + Replace `YOURSUBDOMAIN` with your {% data variables.product.prodname_ghe_cloud %} subdomain. + +1. Save the file. + +{% endvisualstudio %} + +{% jetbrains %} + +To configure the local MCP server with Docker in JetBrains IDEs: + +{% data reusables.copilot.jetbrains-mcp-setup-steps %} +1. Add the following configuration: + + **For {% data variables.product.prodname_ghe_server %}:** + + ```json copy + { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "GitHub PAT", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "-e", + "GITHUB_HOST", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}", + "GITHUB_HOST": "https://YOUR_GHES_HOSTNAME" + } + } + } + } + ``` + + Replace `YOUR_GHES_HOSTNAME` with your {% data variables.product.prodname_ghe_server %} hostname (for example, `https://github.example.com`). + + **For {% data variables.product.prodname_ghe_cloud %} with data residency:** + + ```json copy + { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "GitHub PAT", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "-e", + "GITHUB_HOST", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}", + "GITHUB_HOST": "https://YOURSUBDOMAIN.ghe.com" + } + } + } + } + ``` + + Replace `YOURSUBDOMAIN` with your {% data variables.product.prodname_ghe_cloud %} subdomain. + +{% endjetbrains %} + +{% xcode %} + +To configure the local MCP server with Docker in Xcode: + +{% data reusables.copilot.xcode-mcp-setup-steps %} +1. Add the following configuration: + + **For {% data variables.product.prodname_ghe_server %}:** + + ```json copy + { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "GitHub PAT", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "-e", + "GITHUB_HOST", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}", + "GITHUB_HOST": "https://YOUR_GHES_HOSTNAME" + } + } + } + } + ``` + + Replace `YOUR_GHES_HOSTNAME` with your {% data variables.product.prodname_ghe_server %} hostname (for example, `https://github.example.com`). + + **For {% data variables.product.prodname_ghe_cloud %} with data residency:** + + ```json copy + { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "GitHub PAT", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "-e", + "GITHUB_HOST", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}", + "GITHUB_HOST": "https://YOURSUBDOMAIN.ghe.com" + } + } + } + } + ``` + + Replace `YOURSUBDOMAIN` with your {% data variables.product.prodname_ghe_cloud %} subdomain. + +{% endxcode %} + +{% eclipse %} + +To configure the local MCP server with Docker in Eclipse: + +{% data reusables.copilot.eclipse-mcp-setup-steps %} +1. Add the following configuration under "Server Configurations": + + **For {% data variables.product.prodname_ghe_server %}:** + + ```json copy + { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "GitHub PAT", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "-e", + "GITHUB_HOST", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}", + "GITHUB_HOST": "https://YOUR_GHES_HOSTNAME" + } + } + } + } + ``` + + Replace `YOUR_GHES_HOSTNAME` with your {% data variables.product.prodname_ghe_server %} hostname (for example, `https://github.example.com`). + + **For {% data variables.product.prodname_ghe_cloud %} with data residency:** + + ```json copy + { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "GitHub PAT", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "-e", + "GITHUB_HOST", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}", + "GITHUB_HOST": "https://YOURSUBDOMAIN.ghe.com" + } + } + } + } + ``` + + Replace `YOURSUBDOMAIN` with your {% data variables.product.prodname_ghe_cloud %} subdomain. + +1. Click **Apply**. + +{% endeclipse %} + +### Configuration when building from source + +If you are building the MCP server from source instead of using Docker, you can set the `GITHUB_HOST` environment variable or use the `--gh-host` command-line flag: + +**Using environment variable:** + +```bash +export GITHUB_HOST="https://YOUR_GHES_OR_GHEC_HOSTNAME" +./github-mcp-server stdio +``` + +**Using command-line flag:** + +```bash +./github-mcp-server --gh-host \ + "https://YOUR_GHES_OR_GHEC_HOSTNAME" stdio +``` + +Replace `YOUR_GHES_OR_GHEC_HOSTNAME` with your {% data variables.product.prodname_ghe_server %} hostname (for example, `https://github.example.com`) or {% data variables.product.prodname_ghe_cloud %} hostname (for example, `https://octocorp.ghe.com`). + +## Next steps + +* To learn how to use the {% data variables.product.github %} MCP server, see [AUTOTITLE](/copilot/how-tos/provide-context/use-mcp/use-the-github-mcp-server). +* To learn how to configure toolsets for the {% data variables.product.github %} MCP server, see [AUTOTITLE](/copilot/how-tos/provide-context/use-mcp/configure-toolsets). diff --git a/content/copilot/how-tos/provide-context/use-mcp/index.md b/content/copilot/how-tos/provide-context/use-mcp/index.md index 8d710f94aeb6..30cc2094cf3d 100644 --- a/content/copilot/how-tos/provide-context/use-mcp/index.md +++ b/content/copilot/how-tos/provide-context/use-mcp/index.md @@ -9,6 +9,8 @@ topics: children: - /extend-copilot-chat-with-mcp - /set-up-the-github-mcp-server + - /enterprise-configuration + - /configure-toolsets - /use-the-github-mcp-server - /change-mcp-registry redirect_from: diff --git a/content/copilot/how-tos/provide-context/use-mcp/set-up-the-github-mcp-server.md b/content/copilot/how-tos/provide-context/use-mcp/set-up-the-github-mcp-server.md index b1b46f71aca8..7942d6d22a62 100644 --- a/content/copilot/how-tos/provide-context/use-mcp/set-up-the-github-mcp-server.md +++ b/content/copilot/how-tos/provide-context/use-mcp/set-up-the-github-mcp-server.md @@ -22,6 +22,8 @@ category: The {% data variables.product.github %} MCP server is available to all {% data variables.product.github %} users regardless of plan type. However, specific tools within the MCP server inherit the same access requirements as their corresponding {% data variables.product.github %} features. If a feature requires a paid {% data variables.product.github %} or {% data variables.product.prodname_copilot_short %} license, the equivalent MCP tool will require the same subscription. For example, tools that interact with {% data variables.product.prodname_copilot_short %} Coding Agent require a paid {% data variables.product.prodname_copilot_short %} license. +For the latest information and updates, see the [{% data variables.product.github %} MCP server repository](https://github.com/github/github-mcp-server). + {% vscode %} {% data reusables.copilot.mcp.about-github-mcp-server %} @@ -48,10 +50,6 @@ For information on manually configuring the remote or local {% data variables.pr 1. To check that the {% data variables.product.github %} MCP server is configured correctly, open the command palette by pressing Ctrl+Shift+P (Windows/Linux) / Command+Shift+P (Mac). 1. Type and select **MCP: List Servers**. You should see `github` listed as a configured server. -## Tool configuration - -The {% data variables.product.github %} MCP server supports installing individual toolsets, either in read-only mode or with full read/write access, via the `--toolsets` flag. For more information, see [Tool Configuration](https://github.com/mcp/io.github.github/github-mcp-server#tool-configuration) in the GitHub MCP server documentation. - {% endvscode %} {% visualstudio %} @@ -309,6 +307,11 @@ To configure the remote {% data variables.product.github %} MCP server with a PA {% endeclipse %} +## Enterprise configuration + +If you are using {% data variables.product.prodname_ghe_server %} or {% data variables.product.prodname_ghe_cloud %} with data residency, additional configuration is required. For more information, see [AUTOTITLE](/copilot/how-tos/provide-context/use-mcp/enterprise-configuration). + ## Next steps -To learn how to use the {% data variables.product.github %} MCP server in {% data variables.product.prodname_vscode %}, see [AUTOTITLE](/copilot/how-tos/provide-context/use-mcp/use-the-github-mcp-server). +* To learn how to use the {% data variables.product.github %} MCP server in {% data variables.product.prodname_vscode %}, see [AUTOTITLE](/copilot/how-tos/provide-context/use-mcp/use-the-github-mcp-server). +* For information on configuring individual toolsets with read-only or read/write access, see [AUTOTITLE](/copilot/how-tos/provide-context/use-mcp/configure-toolsets). diff --git a/content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md b/content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md index 0b03872edee4..31c623fcc780 100644 --- a/content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md +++ b/content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md @@ -17,6 +17,9 @@ topics: The {% data variables.product.prodname_copilot_short %} usage metrics dashboard and APIs display and export data using a consistent set of fields. This reference lists all available metrics and describes how to interpret their values in both dashboard visuals and NDJSON or API exports. To retrieve this data programmatically, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). +* The {% data variables.product.prodname_copilot_short %} usage metrics dashboard reports data at the **enterprise** level. +* The {% data variables.product.prodname_copilot_short %} usage metrics APIs support **enterprise-, organization-, and user-level** records. + For guidance on how to read and interpret these metrics, see [AUTOTITLE](/copilot/concepts/copilot-metrics). ## {% data variables.product.prodname_copilot_short %} usage dashboard metrics @@ -60,14 +63,15 @@ These metrics appear in the code generation dashboard and provide a breakdown of ## API and export fields -These fields appear in the exported NDJSON reports and in the {% data variables.product.prodname_copilot_short %} usage metrics APIs. They provide granular daily records for each user in the enterprise. +These fields appear in the exported NDJSON reports and in the {% data variables.product.prodname_copilot_short %} usage metrics APIs. They provide granular daily records for each user included in the requested enterprise or organization scope. | Field | Description | |:--|:--| | `agent_edit` | A dedicated bucket in the API and reports. Captures lines added and deleted directly by {% data variables.product.prodname_copilot_short %} Agent and Edit mode.
These are not included in suggested metrics, since agent edits don’t follow a simple suggestion to acceptance flow. | | `report_start_day` / `report_end_day` | Start and end dates for the 28-day reporting period. | | `day` | Calendar day this record represents. | -| `enterprise_id` | Unique ID of the enterprise or organization. | +| `enterprise_id` | Unique ID of the enterprise. | +| `organization_id` (API only) | Unique ID of the organization. | | `user_id` / `user_login` | Unique identifier and {% data variables.product.github %} username for the user. | | `user_initiated_interaction_count` | Number of explicit prompts sent to {% data variables.product.prodname_copilot_short %}.

Only counts messages or prompts actively sent to the model. Does **not** include opening the chat panel, switching modes (for example, Ask, Edit, or Agent), using keyboard shortcuts to open the inline UI, or making configuration changes. | | `code_generation_activity_count` | Number of distinct {% data variables.product.prodname_copilot_short %} output events generated.

**Includes:** All generated content, including comments and docstrings.
**Multiple blocks:** Each distinct code block from a single user prompt counts as a separate generation.
**Note:** This metric is not directly comparable to `user_initiated_interaction_count`, since one prompt can produce multiple generations. | diff --git a/content/copilot/reference/copilot-usage-metrics/interpret-copilot-metrics.md b/content/copilot/reference/copilot-usage-metrics/interpret-copilot-metrics.md index e05f9fc3f9c3..f8be6b21d698 100644 --- a/content/copilot/reference/copilot-usage-metrics/interpret-copilot-metrics.md +++ b/content/copilot/reference/copilot-usage-metrics/interpret-copilot-metrics.md @@ -16,9 +16,9 @@ redirect_from: >[!NOTE] The {% data variables.product.prodname_copilot_short %} usage metrics dashboard is currently in {% data variables.release-phases.public_preview %} and subject to change. -After you’ve viewed usage data in the {% data variables.product.prodname_copilot_short %} usage metrics dashboard, you can use this article to interpret what each chart means and identify opportunities to increase adoption and engagement across your enterprise. +After you’ve viewed the {% data variables.product.prodname_copilot_short %} usage metrics dashboard, you can use this article to interpret each chart and identify opportunities to increase adoption and engagement. -You can also access these metrics programmatically through the {% data variables.product.prodname_copilot_short %} usage metrics REST API, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). +> [!NOTE] The dashboard reports enterprise-level data. Organization-level views are available through the {% data variables.product.prodname_copilot_short %} usage metrics APIs. ## Reviewing overall usage trends @@ -73,7 +73,6 @@ Use trends in usage, feature adoption, and language activity to guide enablement > [!TIP] > Consider combining dashboard trends with feedback from surveys or retrospectives to get a full picture of {% data variables.product.prodname_copilot_short %}’s impact on developer productivity. -## Further reading +## Next steps -* [AUTOTITLE](/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics) -* [AUTOTITLE](/copilot/reference/copilot-usage-metrics/lines-of-code-metrics) +* To access metrics programmatically, including enterprise, organization, and user-level records, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). diff --git a/content/copilot/reference/copilot-usage-metrics/lines-of-code-metrics.md b/content/copilot/reference/copilot-usage-metrics/lines-of-code-metrics.md index 675a66ea358e..c2c95b04f9d7 100644 --- a/content/copilot/reference/copilot-usage-metrics/lines-of-code-metrics.md +++ b/content/copilot/reference/copilot-usage-metrics/lines-of-code-metrics.md @@ -22,8 +22,8 @@ Lines of Code (LoC) metrics provide a directional measure of {% data variables.p You may encounter LoC metrics in: -* **Code generation dashboard** — visualizes LoC-based user and agent activity. See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/view-code-generation). -* **Exports and APIs** — expose LoC fields such as `loc_suggested_to_add_sum`, `loc_added_sum`, and `loc_deleted_sum`. See [AUTOTITLE](/rest/copilot/copilot-usage-metrics). +* **Code generation dashboard (enterprise level)** — visualizes LoC-based user and agent activity. See [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/view-code-generation). +* **Exports and APIs (enterprise, organization, and user level)** — expose LoC fields such as `loc_suggested_to_add_sum`, `loc_added_sum`, and `loc_deleted_sum`. See [AUTOTITLE](/rest/copilot/copilot-usage-metrics). * **"Data available in {% data variables.product.prodname_copilot_short %} usage metrics" reference** — lists all dashboard and API fields derived from LoC. See [AUTOTITLE](/copilot/reference/copilot-usage-metrics/copilot-usage-metrics). This article covers how LoC is measured and what affects its accuracy and coverage. For detailed definitions, refer to the reference article above. diff --git a/content/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics.md b/content/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics.md index 964ddc517b59..346b57db7208 100644 --- a/content/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics.md +++ b/content/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics.md @@ -18,6 +18,9 @@ redirect_from: The {% data variables.product.prodname_copilot_short %} usage metrics dashboard, APIs, and export files all use the same underlying telemetry data, but they aggregate and present it differently. Understanding these differences helps you reconcile numbers across sources and trust your analysis when preparing internal reports. +* The {% data variables.product.prodname_copilot_short %} usage metrics dashboard reports data at the **enterprise-level**. +* The {% data variables.product.prodname_copilot_short %} usage metrics APIs support **enterprise-, organization-, and user-level** records. + ## Prerequisite {% data variables.product.prodname_copilot_short %} usage metrics depend on **telemetry from users’ IDEs**. If a developer has disabled telemetry in their IDE, their {% data variables.product.prodname_copilot_short %} activity will **not** appear in the dashboard, API reports, or exported data. diff --git a/content/copilot/tutorials/roll-out-at-scale/measure-success.md b/content/copilot/tutorials/roll-out-at-scale/measure-success.md index f2ad1ef7804f..34864c652969 100644 --- a/content/copilot/tutorials/roll-out-at-scale/measure-success.md +++ b/content/copilot/tutorials/roll-out-at-scale/measure-success.md @@ -38,6 +38,10 @@ Setting clear goals makes it easier to interpret results and communicate value t ## Step 2: View adoption and engagement metrics in the dashboard +> [!NOTE] +> * The {% data variables.product.prodname_copilot_short %} usage metrics dashboard reports data at the enterprise level. +> * Organization-level metrics are available through the {% data variables.product.prodname_copilot_short %} usage metrics APIs and exports. + {% data reusables.copilot.access-copilot-metrics-dashboard %} The dashboard shows 28 days of aggregated IDE telemetry data for all licensed users in your enterprise. Focus on these **key metrics** during your trial: diff --git a/data/reusables/copilot/org-copilot-usage-metrics.md b/data/reusables/copilot/org-copilot-usage-metrics.md new file mode 100644 index 000000000000..37ce071b9cfd --- /dev/null +++ b/data/reusables/copilot/org-copilot-usage-metrics.md @@ -0,0 +1 @@ +> [!NOTE] The {% data variables.product.prodname_copilot_short %} usage metrics dashboard reports data at the enterprise level. Organization-level metrics are available through the {% data variables.product.prodname_copilot_short %} usage metrics APIs only. See [AUTOTITLE](/rest/copilot/copilot-usage-metrics). diff --git a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json index 9892129a3129..c06c730baf88 100644 --- a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json @@ -2408,6 +2408,48 @@ } ] }, + "organization_copilot_metrics": { + "title": "Organization Copilot metrics", + "displayTitle": "Organization permissions for \"Organization Copilot metrics\"", + "permissions": [ + { + "category": "copilot", + "slug": "get-copilot-organization-usage-metrics-for-a-specific-day", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-1-day", + "additional-permissions": false, + "access": "read" + }, + { + "category": "copilot", + "slug": "get-copilot-organization-usage-metrics", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-28-day/latest", + "additional-permissions": false, + "access": "read" + }, + { + "category": "copilot", + "slug": "get-copilot-organization-users-usage-metrics-for-a-specific-day", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-1-day", + "additional-permissions": false, + "access": "read" + }, + { + "category": "copilot", + "slug": "get-copilot-organization-users-usage-metrics", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-28-day/latest", + "additional-permissions": false, + "access": "read" + } + ] + }, "organization_announcement_banners": { "title": "Organization announcement banners", "displayTitle": "Organization permissions for \"Organization announcement banners\"", @@ -2753,6 +2795,15 @@ "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", "additional-permissions": true, "access": "write" + }, + { + "category": "dependabot", + "slug": "cancel-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", + "additional-permissions": true, + "access": "write" } ] }, @@ -6882,6 +6933,15 @@ "additional-permissions": false, "access": "read" }, + { + "category": "dependabot", + "slug": "create-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "post", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", + "additional-permissions": false, + "access": "read" + }, { "category": "dependabot", "slug": "review-a-dismissal-request-for-a-dependabot-alert-for-a-repository", @@ -6890,6 +6950,15 @@ "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", "additional-permissions": true, "access": "read" + }, + { + "category": "dependabot", + "slug": "cancel-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", + "additional-permissions": true, + "access": "read" } ] }, diff --git a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json index 95231dac443d..96f4c5caa44b 100644 --- a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json +++ b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json @@ -2194,6 +2194,30 @@ "verb": "get", "requestPath": "/orgs/{org}/copilot/metrics" }, + { + "slug": "get-copilot-organization-usage-metrics-for-a-specific-day", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-1-day" + }, + { + "slug": "get-copilot-organization-usage-metrics", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-28-day/latest" + }, + { + "slug": "get-copilot-organization-users-usage-metrics-for-a-specific-day", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-1-day" + }, + { + "slug": "get-copilot-organization-users-usage-metrics", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-28-day/latest" + }, { "slug": "get-copilot-seat-assignment-details-for-a-user", "subcategory": "copilot-user-management", @@ -2352,11 +2376,23 @@ "verb": "get", "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" }, + { + "slug": "create-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "post", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" + }, { "slug": "review-a-dismissal-request-for-a-dependabot-alert-for-a-repository", "subcategory": "alert-dismissal-requests", "verb": "patch", "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" + }, + { + "slug": "cancel-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" } ], "dependency-graph": [ diff --git a/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json index f3372886b8c1..e3d83b2d5b1e 100644 --- a/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json @@ -3425,6 +3425,56 @@ } ] }, + "organization_copilot_metrics": { + "title": "Organization Copilot metrics", + "displayTitle": "Organization permissions for \"Organization Copilot metrics\"", + "permissions": [ + { + "category": "copilot", + "slug": "get-copilot-organization-usage-metrics-for-a-specific-day", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-1-day", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, + { + "category": "copilot", + "slug": "get-copilot-organization-usage-metrics", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-28-day/latest", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, + { + "category": "copilot", + "slug": "get-copilot-organization-users-usage-metrics-for-a-specific-day", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-1-day", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, + { + "category": "copilot", + "slug": "get-copilot-organization-users-usage-metrics", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-28-day/latest", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + } + ] + }, "organization_announcement_banners": { "title": "Organization announcement banners", "displayTitle": "Organization permissions for \"Organization announcement banners\"", @@ -3838,6 +3888,17 @@ "user-to-server": true, "server-to-server": true, "additional-permissions": true + }, + { + "category": "dependabot", + "slug": "cancel-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", + "access": "write", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": true } ] }, @@ -9115,6 +9176,17 @@ "server-to-server": true, "additional-permissions": false }, + { + "category": "dependabot", + "slug": "create-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "post", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, { "category": "dependabot", "slug": "review-a-dismissal-request-for-a-dependabot-alert-for-a-repository", @@ -9125,6 +9197,17 @@ "user-to-server": true, "server-to-server": true, "additional-permissions": true + }, + { + "category": "dependabot", + "slug": "cancel-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": true } ] }, diff --git a/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json b/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json index 215592869d9e..fd2258be9cb1 100644 --- a/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json +++ b/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json @@ -2170,6 +2170,30 @@ "verb": "get", "requestPath": "/orgs/{org}/copilot/metrics" }, + { + "slug": "get-copilot-organization-usage-metrics-for-a-specific-day", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-1-day" + }, + { + "slug": "get-copilot-organization-usage-metrics", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-28-day/latest" + }, + { + "slug": "get-copilot-organization-users-usage-metrics-for-a-specific-day", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-1-day" + }, + { + "slug": "get-copilot-organization-users-usage-metrics", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-28-day/latest" + }, { "slug": "get-copilot-seat-assignment-details-for-a-user", "subcategory": "copilot-user-management", @@ -2336,11 +2360,23 @@ "verb": "get", "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" }, + { + "slug": "create-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "post", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" + }, { "slug": "review-a-dismissal-request-for-a-dependabot-alert-for-a-repository", "subcategory": "alert-dismissal-requests", "verb": "patch", "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" + }, + { + "slug": "cancel-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" } ], "dependency-graph": [ diff --git a/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json b/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json index 17c248eb0fa8..6a2c39bb9ccb 100644 --- a/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json +++ b/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json @@ -2418,6 +2418,30 @@ "verb": "get", "requestPath": "/orgs/{org}/copilot/metrics" }, + { + "slug": "get-copilot-organization-usage-metrics-for-a-specific-day", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-1-day" + }, + { + "slug": "get-copilot-organization-usage-metrics", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-28-day/latest" + }, + { + "slug": "get-copilot-organization-users-usage-metrics-for-a-specific-day", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-1-day" + }, + { + "slug": "get-copilot-organization-users-usage-metrics", + "subcategory": "copilot-usage-metrics", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-28-day/latest" + }, { "slug": "get-copilot-seat-assignment-details-for-a-user", "subcategory": "copilot-user-management", @@ -2584,11 +2608,23 @@ "verb": "get", "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" }, + { + "slug": "create-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "post", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" + }, { "slug": "review-a-dismissal-request-for-a-dependabot-alert-for-a-repository", "subcategory": "alert-dismissal-requests", "verb": "patch", "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" + }, + { + "slug": "cancel-a-dismissal-request-for-a-dependabot-alert-for-a-repository", + "subcategory": "alert-dismissal-requests", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}" } ], "dependency-graph": [ diff --git a/src/github-apps/lib/config.json b/src/github-apps/lib/config.json index 52057e9a48ad..984266dcdb1f 100644 --- a/src/github-apps/lib/config.json +++ b/src/github-apps/lib/config.json @@ -60,5 +60,5 @@ "2022-11-28" ] }, - "sha": "b1e772fd7deb79fdcde54863353275d990299269" + "sha": "8fcf2850bf7699b117f63cd2f385f792dde1d760" } \ No newline at end of file diff --git a/src/rest/data/fpt-2022-11-28/schema.json b/src/rest/data/fpt-2022-11-28/schema.json index 8959abc288cc..fd41be9f3620 100644 --- a/src/rest/data/fpt-2022-11-28/schema.json +++ b/src/rest/data/fpt-2022-11-28/schema.json @@ -229830,6 +229830,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -231660,6 +231669,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -233699,6 +233717,12 @@ "name": "create_request", "in": "body", "description": "

If true, attempt to create an alert dismissal request.

" + }, + { + "type": "array of strings", + "name": "assignees", + "in": "body", + "description": "

The list of users to assign to the code scanning alert. An empty array unassigns all previous assignees from the alert.

" } ], "descriptionHTML": "

Updates the status of a single code scanning alert.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", @@ -235269,10 +235293,9 @@ "string", "null" ], - "description": "State of a code scanning alert.", + "description": "State of a code scanning alert instance.", "enum": [ "open", - "dismissed", "fixed", null ] @@ -470384,6 +470407,10 @@ "httpStatusCode": "200", "description": "

OK

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

Accepted

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

Forbidden

" @@ -470555,6 +470582,10 @@ "httpStatusCode": "200", "description": "

OK

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

Accepted

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

Forbidden

" @@ -470679,6 +470710,10 @@ "httpStatusCode": "200", "description": "

OK

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

Accepted

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

Forbidden

" @@ -470891,6 +470926,10 @@ "httpStatusCode": "200", "description": "

OK

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

Accepted

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

Forbidden

" @@ -494024,7 +494063,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -494177,7 +494217,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -494316,7 +494357,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -494502,7 +494544,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -494637,7 +494680,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -494747,7 +494791,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ diff --git a/src/rest/data/ghec-2022-11-28/schema.json b/src/rest/data/ghec-2022-11-28/schema.json index 448fde41d309..e23081884f50 100644 --- a/src/rest/data/ghec-2022-11-28/schema.json +++ b/src/rest/data/ghec-2022-11-28/schema.json @@ -241576,6 +241576,15 @@ ], "default": "created" } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -243374,6 +243383,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -245204,6 +245222,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -247243,6 +247270,12 @@ "name": "create_request", "in": "body", "description": "

If true, attempt to create an alert dismissal request.

" + }, + { + "type": "array of strings", + "name": "assignees", + "in": "body", + "description": "

The list of users to assign to the code scanning alert. An empty array unassigns all previous assignees from the alert.

" } ], "descriptionHTML": "

Updates the status of a single code scanning alert.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", @@ -248813,10 +248846,9 @@ "string", "null" ], - "description": "State of a code scanning alert.", + "description": "State of a code scanning alert instance.", "enum": [ "open", - "dismissed", "fixed", null ] @@ -331002,6 +331034,438 @@ } ] } + }, + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-1-day", + "title": "Get Copilot organization usage metrics for a specific day", + "category": "copilot", + "subcategory": "copilot-usage-metrics", + "parameters": [ + { + "name": "org", + "description": "

The organization name. The name is not case sensitive.

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

The day to request data for, in YYYY-MM-DD format.

", + "in": "query", + "required": true, + "schema": { + "type": "string", + "format": "date", + "examples": [ + "2025-10-13" + ] + } + } + ], + "bodyParameters": [], + "descriptionHTML": "

Use this endpoint to retrieve download links for the Copilot organization usage metrics report for a specific day. The report provides comprehensive usage data for Copilot features across the organization.

\n

The report contains aggregated metrics for the specified day, including usage statistics for various Copilot features, user engagement data, and feature adoption metrics. Reports are generated daily and made available for download through signed URLs with a limited expiration time.

\n

The response includes download links to the report files, along with the specific date of the report. The report covers a complete day for which data has been processed.

\n

Organization owners and authorized users with fine-grained \"View Organization Copilot Metrics\" permission can retrieve Copilot metrics reports for the organization. OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

\n

For more information about organization metrics attribution, see How are metrics attributed across organizations.

", + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "org": "ORG" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "

Response

", + "example": { + "download_links": [ + "https://example.com/copilot-usage-report-1.json", + "https://example.com/copilot-usage-report-2.json" + ], + "report_day": "2025-07-01" + }, + "schema": { + "type": "object", + "title": "Copilot Metrics 1 Day Report", + "description": "Links to download the Copilot usage metrics report for an enterprise/organization for a specific day.", + "properties": { + "download_links": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "description": "The URLs to download the Copilot usage metrics report for the enterprise/organization for the specified day." + }, + "report_day": { + "type": "string", + "format": "date", + "description": "The day of the report in `YYYY-MM-DD` format." + } + }, + "required": [ + "download_links", + "report_day" + ] + } + } + } + ], + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

OK

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

Forbidden

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

Resource not found

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

Internal Error

" + } + ], + "previews": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization Copilot metrics\" organization permissions": "read" + } + ] + } + }, + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/organization-28-day/latest", + "title": "Get Copilot organization usage metrics", + "category": "copilot", + "subcategory": "copilot-usage-metrics", + "parameters": [ + { + "name": "org", + "description": "

The organization name. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "bodyParameters": [], + "descriptionHTML": "

Use this endpoint to retrieve download links for the latest 28-day organization Copilot usage metrics report. The report provides comprehensive usage data for Copilot features across the organization.

\n

The report contains aggregated metrics for the previous 28 days, including usage statistics for various Copilot features, user engagement data, and feature adoption metrics. Reports are generated daily and made available for download through signed URLs with a limited expiration time.

\n

The response includes download links to the report files, along with the specific date range covered by the report. The report covers a complete 28-day period ending on the most recent day for which data has been processed.

\n

Organization owners and authorized users with fine-grained \"View Organization Copilot Metrics\" permission can retrieve Copilot metrics reports for the organization. OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

\n

For more information about organization metrics attribution, see How are metrics attributed across organizations.

", + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "org": "ORG" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "

Response

", + "example": { + "download_links": [ + "https://example.com/copilot-usage-report-1.json", + "https://example.com/copilot-usage-report-2.json" + ], + "report_start_day": "2025-07-01", + "report_end_day": "2025-07-28" + }, + "schema": { + "type": "object", + "title": "Copilot Metrics 28 Day Report", + "description": "Links to download the latest Copilot usage metrics report for an enterprise/organization.", + "properties": { + "download_links": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "description": "The URLs to download the latest Copilot usage metrics report for the enterprise/organization." + }, + "report_start_day": { + "type": "string", + "format": "date", + "description": "The start date of the report period in `YYYY-MM-DD` format." + }, + "report_end_day": { + "type": "string", + "format": "date", + "description": "The end date of the report period in `YYYY-MM-DD` format." + } + }, + "required": [ + "download_links", + "report_start_day", + "report_end_day" + ] + } + } + } + ], + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

OK

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

Forbidden

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

Resource not found

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

Internal Error

" + } + ], + "previews": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization Copilot metrics\" organization permissions": "read" + } + ] + } + }, + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-1-day", + "title": "Get Copilot organization users usage metrics for a specific day", + "category": "copilot", + "subcategory": "copilot-usage-metrics", + "parameters": [ + { + "name": "org", + "description": "

The organization name. The name is not case sensitive.

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

The day to request data for, in YYYY-MM-DD format.

", + "in": "query", + "required": true, + "schema": { + "type": "string", + "format": "date", + "examples": [ + "2025-10-13" + ] + } + } + ], + "bodyParameters": [], + "descriptionHTML": "

Use this endpoint to retrieve download links for the Copilot organization user usage metrics report for a specific day. The report provides detailed user-level usage data and engagement metrics for Copilot features across the organization.

\n

The report contains user-specific metrics for the specified day, including individual user engagement statistics, feature usage patterns, and adoption metrics broken down by user. This report allows authorized users to analyze Copilot usage at the user level to understand adoption patterns and identify opportunities for increased engagement.

\n

Reports are generated daily and made available for download through signed URLs with a limited expiration time. The response includes download links to the report files, along with the specific date of the report. The report covers a complete day for which data has been processed.

\n

Organization owners and authorized users with fine-grained \"View Organization Copilot Metrics\" permission can retrieve Copilot metrics reports for the organization. OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

\n

For more information about organization metrics attribution, see How are metrics attributed across organizations.

", + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "org": "ORG" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "

Response

", + "example": { + "download_links": [ + "https://example.com/copilot-usage-report-1.json", + "https://example.com/copilot-usage-report-2.json" + ], + "report_day": "2025-07-01" + }, + "schema": { + "type": "object", + "title": "Copilot Metrics 1 Day Report", + "description": "Links to download the Copilot usage metrics report for an enterprise/organization for a specific day.", + "properties": { + "download_links": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "description": "The URLs to download the Copilot usage metrics report for the enterprise/organization for the specified day." + }, + "report_day": { + "type": "string", + "format": "date", + "description": "The day of the report in `YYYY-MM-DD` format." + } + }, + "required": [ + "download_links", + "report_day" + ] + } + } + } + ], + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

OK

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

Forbidden

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

Resource not found

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

Internal Error

" + } + ], + "previews": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization Copilot metrics\" organization permissions": "read" + } + ] + } + }, + { + "serverUrl": "https://api.github.com", + "verb": "get", + "requestPath": "/orgs/{org}/copilot/metrics/reports/users-28-day/latest", + "title": "Get Copilot organization users usage metrics", + "category": "copilot", + "subcategory": "copilot-usage-metrics", + "parameters": [ + { + "name": "org", + "description": "

The organization name. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "bodyParameters": [], + "descriptionHTML": "

Use this endpoint to retrieve download links for the latest 28-day organization users Copilot usage metrics report. The report provides detailed user-level usage data and engagement metrics for Copilot features across the organization.

\n

The report contains user-specific metrics for the previous 28 days, including individual user engagement statistics, feature usage patterns, and adoption metrics broken down by user. This report allows authorized users to analyze Copilot usage at the user level to understand adoption patterns and identify opportunities for increased engagement.

\n

Reports are generated daily and made available for download through signed URLs with a limited expiration time. The response includes download links to the report files, along with the specific date range covered by the report. The report covers a complete 28-day period ending on the most recent day for which data has been processed.

\n

Organization owners and authorized users with fine-grained \"View Organization Copilot Metrics\" permission can retrieve Copilot metrics reports for the organization. OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

\n

For more information about organization metrics attribution, see How are metrics attributed across organizations.

", + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "org": "ORG" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "

Response

", + "example": { + "download_links": [ + "https://example.com/copilot-usage-report-1.json", + "https://example.com/copilot-usage-report-2.json" + ], + "report_start_day": "2025-07-01", + "report_end_day": "2025-07-28" + }, + "schema": { + "type": "object", + "title": "Copilot Metrics 28 Day Report", + "description": "Links to download the latest Copilot usage metrics report for an enterprise/organization.", + "properties": { + "download_links": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "description": "The URLs to download the latest Copilot usage metrics report for the enterprise/organization." + }, + "report_start_day": { + "type": "string", + "format": "date", + "description": "The start date of the report period in `YYYY-MM-DD` format." + }, + "report_end_day": { + "type": "string", + "format": "date", + "description": "The end date of the report period in `YYYY-MM-DD` format." + } + }, + "required": [ + "download_links", + "report_start_day", + "report_end_day" + ] + } + } + } + ], + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

OK

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

Forbidden

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

Resource not found

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

Internal Error

" + } + ], + "previews": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Organization Copilot metrics\" organization permissions": "read" + } + ] + } } ], "copilot-user-management": [ @@ -336488,14 +336952,703 @@ } } ], - "bodyParameters": [], - "descriptionHTML": "

Gets a dismissal request to dismiss a Dependabot alert in a repository.

\n

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

", + "bodyParameters": [], + "descriptionHTML": "

Gets a dismissal request to dismiss a Dependabot alert in a repository.

\n

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

", + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "owner": "OWNER", + "repo": "REPO", + "alert_number": "ALERT_NUMBER" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "

A single dismissal request.

", + "example": { + "id": 21, + "number": 42, + "repository": { + "id": 1, + "name": "smile", + "full_name": "octo-org/smile" + }, + "organization": { + "id": 1, + "name": "octo-org" + }, + "requester": { + "actor_id": 12, + "actor_name": "monalisa" + }, + "request_type": "dependabot_alert_dismissal", + "data": [ + { + "reason": "no_bandwidth", + "alert_number": "1", + "alert_title": "lodash - GHSA-1234-abcd-5678" + } + ], + "resource_identifier": "1", + "status": "pending", + "requester_comment": "No bandwidth to fix this right now", + "expires_at": "2024-07-08T08:43:03Z", + "created_at": "2024-07-01T08:43:03Z", + "responses": [], + "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/dependabot/1", + "html_url": "https://github.com/octo-org/smile/security/dependabot/1" + }, + "schema": { + "title": "Dependabot alert dismissal request", + "description": "Alert dismissal request made by a user asking to dismiss a Dependabot alert.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The unique identifier of the dismissal request." + }, + "number": { + "type": "integer", + "format": "int64", + "description": "The number uniquely identifying the dismissal request within its repository." + }, + "repository": { + "type": "object", + "description": "The repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the repository the dismissal request is for." + }, + "name": { + "type": "string", + "description": "The name of the repository the dismissal request is for." + }, + "full_name": { + "type": "string", + "description": "The full name of the repository the dismissal request is for." + } + } + }, + "organization": { + "type": "object", + "description": "The organization associated with the repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the organization." + }, + "name": { + "type": "string", + "description": "The name of the organization." + } + } + }, + "requester": { + "type": "object", + "description": "The user who requested the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who requested the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who requested the dismissal request." + } + } + }, + "request_type": { + "type": "string", + "description": "The type of request." + }, + "data": { + "type": [ + "array", + "null" + ], + "description": "Data describing the dismissal request metadata.", + "items": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the dismissal request." + }, + "alert_number": { + "type": "string", + "description": "The alert number." + }, + "alert_title": { + "type": "string", + "description": "The title of the alert." + } + } + } + }, + "resource_identifier": { + "type": "string", + "description": "The unique identifier for the request type of the dismissal request.", + "examples": [ + "123" + ] + }, + "status": { + "type": "string", + "description": "The status of the dismissal request.", + "enum": [ + "pending", + "denied", + "approved", + "expired" + ] + }, + "requester_comment": { + "type": [ + "string", + "null" + ], + "description": "The comment the requester provided when creating the dismissal request." + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request will expire." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request was created." + }, + "responses": { + "type": [ + "array", + "null" + ], + "description": "The responses to the dismissal request.", + "items": { + "title": "Dismissal request response", + "description": "A response made by a requester to dismiss the request.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the response to the dismissal request." + }, + "reviewer": { + "type": "object", + "description": "The user who reviewed the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who reviewed the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who reviewed the dismissal request." + } + } + }, + "message": { + "type": [ + "string", + "null" + ], + "description": "The response comment of the reviewer." + }, + "status": { + "type": "string", + "description": "The response status to the dismissal request until dismissed.", + "enum": [ + "approved", + "denied", + "dismissed" + ] + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the response to the dismissal request was created." + } + } + } + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/repos/octo-org/smile/dismissal-requests/dependabot/1" + ] + }, + "html_url": { + "type": "string", + "description": "The URL to view the dismissal request in a browser.", + "format": "uri", + "examples": [ + "https://github.com/octo-org/smile/security/dependabot/1" + ] + } + } + } + } + } + ], + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

A single dismissal request.

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

Forbidden

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

Resource not found

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

Internal Error

" + } + ], + "previews": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Dependabot alerts\" repository permissions": "read" + } + ] + } + }, + { + "serverUrl": "https://api.github.com", + "verb": "post", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", + "title": "Create a dismissal request for a Dependabot alert for a repository", + "category": "dependabot", + "subcategory": "alert-dismissal-requests", + "parameters": [ + { + "name": "owner", + "description": "

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

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

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

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

The number that identifies the Dependabot alert.

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

The reason for dismissing the alert.

", + "isRequired": true, + "enum": [ + "fix_started", + "no_bandwidth", + "tolerable_risk", + "inaccurate", + "not_used" + ] + }, + { + "type": "string", + "name": "dismissed_comment", + "in": "body", + "description": "

An optional comment explaining the dismissal.

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

Creates a new dismissal request to dismiss a Dependabot alert in a repository.

\n

Delegated alert dismissal must be enabled on the repository and the user must have permission to view Dependabot alerts to access this endpoint.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint.

", + "codeExamples": [ + { + "key": "default", + "request": { + "contentType": "application/json", + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "bodyParameters": { + "dismissed_reason": "tolerable_risk", + "dismissed_comment": "Risk is acceptable for this project." + }, + "parameters": { + "owner": "OWNER", + "repo": "REPO", + "alert_number": "ALERT_NUMBER" + } + }, + "response": { + "statusCode": "201", + "contentType": "application/json", + "description": "

The created dismissal request.

", + "example": { + "id": 1, + "number": 1, + "repository": { + "id": 1, + "name": "hello-world", + "full_name": "octocat/hello-world" + }, + "organization": { + "id": 1, + "name": "octocat" + }, + "requester": { + "actor_id": 1, + "actor_name": "octocat" + }, + "request_type": "dependabot_alert_closure", + "data": [ + { + "reason": "tolerable_risk", + "alert_number": "42", + "alert_title": "lodash vulnerability" + } + ], + "resource_identifier": "42", + "status": "pending", + "requester_comment": "Risk is acceptable for this project.", + "expires_at": "2024-01-15T00:00:00Z", + "created_at": "2024-01-08T00:00:00Z", + "responses": null, + "url": "https://github.com/octocat/hello-world/security/dependabot/42" + }, + "schema": { + "title": "Dependabot alert dismissal request", + "description": "Alert dismissal request made by a user asking to dismiss a Dependabot alert.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The unique identifier of the dismissal request." + }, + "number": { + "type": "integer", + "format": "int64", + "description": "The number uniquely identifying the dismissal request within its repository." + }, + "repository": { + "type": "object", + "description": "The repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the repository the dismissal request is for." + }, + "name": { + "type": "string", + "description": "The name of the repository the dismissal request is for." + }, + "full_name": { + "type": "string", + "description": "The full name of the repository the dismissal request is for." + } + } + }, + "organization": { + "type": "object", + "description": "The organization associated with the repository the dismissal request is for.", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the organization." + }, + "name": { + "type": "string", + "description": "The name of the organization." + } + } + }, + "requester": { + "type": "object", + "description": "The user who requested the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who requested the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who requested the dismissal request." + } + } + }, + "request_type": { + "type": "string", + "description": "The type of request." + }, + "data": { + "type": [ + "array", + "null" + ], + "description": "Data describing the dismissal request metadata.", + "items": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "The reason for the dismissal request." + }, + "alert_number": { + "type": "string", + "description": "The alert number." + }, + "alert_title": { + "type": "string", + "description": "The title of the alert." + } + } + } + }, + "resource_identifier": { + "type": "string", + "description": "The unique identifier for the request type of the dismissal request.", + "examples": [ + "123" + ] + }, + "status": { + "type": "string", + "description": "The status of the dismissal request.", + "enum": [ + "pending", + "denied", + "approved", + "expired" + ] + }, + "requester_comment": { + "type": [ + "string", + "null" + ], + "description": "The comment the requester provided when creating the dismissal request." + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request will expire." + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the dismissal request was created." + }, + "responses": { + "type": [ + "array", + "null" + ], + "description": "The responses to the dismissal request.", + "items": { + "title": "Dismissal request response", + "description": "A response made by a requester to dismiss the request.", + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "The ID of the response to the dismissal request." + }, + "reviewer": { + "type": "object", + "description": "The user who reviewed the dismissal request.", + "properties": { + "actor_id": { + "type": "integer", + "format": "int64", + "description": "The ID of the GitHub user who reviewed the dismissal request." + }, + "actor_name": { + "type": "string", + "description": "The name of the GitHub user who reviewed the dismissal request." + } + } + }, + "message": { + "type": [ + "string", + "null" + ], + "description": "The response comment of the reviewer." + }, + "status": { + "type": "string", + "description": "The response status to the dismissal request until dismissed.", + "enum": [ + "approved", + "denied", + "dismissed" + ] + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The date and time the response to the dismissal request was created." + } + } + } + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/repos/octo-org/smile/dismissal-requests/dependabot/1" + ] + }, + "html_url": { + "type": "string", + "description": "The URL to view the dismissal request in a browser.", + "format": "uri", + "examples": [ + "https://github.com/octo-org/smile/security/dependabot/1" + ] + } + } + } + } + } + ], + "statusCodes": [ + { + "httpStatusCode": "201", + "description": "

The created dismissal request.

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

Forbidden

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

Resource not found

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

Validation failed, or the endpoint has been spammed.

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

Internal Error

" + } + ], + "previews": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Dependabot alerts\" repository permissions": "read" + } + ] + } + }, + { + "serverUrl": "https://api.github.com", + "verb": "patch", + "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", + "title": "Review a dismissal request for a Dependabot alert for a repository", + "category": "dependabot", + "subcategory": "alert-dismissal-requests", + "parameters": [ + { + "name": "owner", + "description": "

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

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

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

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

The number that identifies the Dependabot alert.

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

The review action to perform on the dismissal request.

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

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

", + "isRequired": true + } + ], + "descriptionHTML": "

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

\n

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

", "codeExamples": [ { "key": "default", "request": { + "contentType": "application/json", "description": "Example", "acceptHeader": "application/vnd.github.v3+json", + "bodyParameters": { + "status": "approve", + "message": "Used in tests." + }, "parameters": { "owner": "OWNER", "repo": "REPO", @@ -336505,235 +337658,16 @@ "response": { "statusCode": "200", "contentType": "application/json", - "description": "

A single dismissal request.

", + "description": "

The review of the dismissal request.

", "example": { - "id": 21, - "number": 42, - "repository": { - "id": 1, - "name": "smile", - "full_name": "octo-org/smile" - }, - "organization": { - "id": 1, - "name": "octo-org" - }, - "requester": { - "actor_id": 12, - "actor_name": "monalisa" - }, - "request_type": "dependabot_alert_dismissal", - "data": [ - { - "reason": "no_bandwidth", - "alert_number": "1", - "alert_title": "lodash - GHSA-1234-abcd-5678" - } - ], - "resource_identifier": "1", - "status": "pending", - "requester_comment": "No bandwidth to fix this right now", - "expires_at": "2024-07-08T08:43:03Z", - "created_at": "2024-07-01T08:43:03Z", - "responses": [], - "url": "https://api.github.com/repos/octo-org/smile/dismissal-requests/dependabot/1", - "html_url": "https://github.com/octo-org/smile/security/dependabot/1" + "dismissal_review_id": 1 }, "schema": { - "title": "Dependabot alert dismissal request", - "description": "Alert dismissal request made by a user asking to dismiss a Dependabot alert.", "type": "object", "properties": { - "id": { - "type": "integer", - "format": "int64", - "description": "The unique identifier of the dismissal request." - }, - "number": { + "dismissal_review_id": { "type": "integer", - "format": "int64", - "description": "The number uniquely identifying the dismissal request within its repository." - }, - "repository": { - "type": "object", - "description": "The repository the dismissal request is for.", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "description": "The ID of the repository the dismissal request is for." - }, - "name": { - "type": "string", - "description": "The name of the repository the dismissal request is for." - }, - "full_name": { - "type": "string", - "description": "The full name of the repository the dismissal request is for." - } - } - }, - "organization": { - "type": "object", - "description": "The organization associated with the repository the dismissal request is for.", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "description": "The ID of the organization." - }, - "name": { - "type": "string", - "description": "The name of the organization." - } - } - }, - "requester": { - "type": "object", - "description": "The user who requested the dismissal request.", - "properties": { - "actor_id": { - "type": "integer", - "format": "int64", - "description": "The ID of the GitHub user who requested the dismissal request." - }, - "actor_name": { - "type": "string", - "description": "The name of the GitHub user who requested the dismissal request." - } - } - }, - "request_type": { - "type": "string", - "description": "The type of request." - }, - "data": { - "type": [ - "array", - "null" - ], - "description": "Data describing the dismissal request metadata.", - "items": { - "type": "object", - "properties": { - "reason": { - "type": "string", - "description": "The reason for the dismissal request." - }, - "alert_number": { - "type": "string", - "description": "The alert number." - }, - "alert_title": { - "type": "string", - "description": "The title of the alert." - } - } - } - }, - "resource_identifier": { - "type": "string", - "description": "The unique identifier for the request type of the dismissal request.", - "examples": [ - "123" - ] - }, - "status": { - "type": "string", - "description": "The status of the dismissal request.", - "enum": [ - "pending", - "denied", - "approved", - "expired" - ] - }, - "requester_comment": { - "type": [ - "string", - "null" - ], - "description": "The comment the requester provided when creating the dismissal request." - }, - "expires_at": { - "type": "string", - "format": "date-time", - "description": "The date and time the dismissal request will expire." - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The date and time the dismissal request was created." - }, - "responses": { - "type": [ - "array", - "null" - ], - "description": "The responses to the dismissal request.", - "items": { - "title": "Dismissal request response", - "description": "A response made by a requester to dismiss the request.", - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "description": "The ID of the response to the dismissal request." - }, - "reviewer": { - "type": "object", - "description": "The user who reviewed the dismissal request.", - "properties": { - "actor_id": { - "type": "integer", - "format": "int64", - "description": "The ID of the GitHub user who reviewed the dismissal request." - }, - "actor_name": { - "type": "string", - "description": "The name of the GitHub user who reviewed the dismissal request." - } - } - }, - "message": { - "type": [ - "string", - "null" - ], - "description": "The response comment of the reviewer." - }, - "status": { - "type": "string", - "description": "The response status to the dismissal request until dismissed.", - "enum": [ - "approved", - "denied", - "dismissed" - ] - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The date and time the response to the dismissal request was created." - } - } - } - }, - "url": { - "type": "string", - "format": "uri", - "examples": [ - "https://api.github.com/repos/octo-org/smile/dismissal-requests/dependabot/1" - ] - }, - "html_url": { - "type": "string", - "description": "The URL to view the dismissal request in a browser.", - "format": "uri", - "examples": [ - "https://github.com/octo-org/smile/security/dependabot/1" - ] + "description": "ID of the dismissal review." } } } @@ -336743,7 +337677,7 @@ "statusCodes": [ { "httpStatusCode": "200", - "description": "

A single dismissal request.

" + "description": "

The review of the dismissal request.

" }, { "httpStatusCode": "403", @@ -336753,6 +337687,10 @@ "httpStatusCode": "404", "description": "

Resource not found

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

Validation failed, or the endpoint has been spammed.

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

Internal Error

" @@ -336765,6 +337703,7 @@ "fineGrainedPat": true, "permissions": [ { + "\"Organization dismissal requests for Dependabot\" organization permissions": "write", "\"Dependabot alerts\" repository permissions": "read" } ] @@ -336772,9 +337711,9 @@ }, { "serverUrl": "https://api.github.com", - "verb": "patch", + "verb": "delete", "requestPath": "/repos/{owner}/{repo}/dismissal-requests/dependabot/{alert_number}", - "title": "Review a dismissal request for a Dependabot alert for a repository", + "title": "Cancel a dismissal request for a Dependabot alert for a repository", "category": "dependabot", "subcategory": "alert-dismissal-requests", "parameters": [ @@ -336806,38 +337745,14 @@ } } ], - "bodyParameters": [ - { - "type": "string", - "name": "status", - "in": "body", - "description": "

The review action to perform on the dismissal request.

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

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

", - "isRequired": true - } - ], - "descriptionHTML": "

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

\n

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

", + "bodyParameters": [], + "descriptionHTML": "

Cancels a pending dismissal request for a Dependabot alert in a repository.

\n

The authenticated user must be the requester of the dismissal request or have reviewer permissions (security manager or organization owner).\nDelegated alert dismissal must be enabled on the repository.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint.

", "codeExamples": [ { "key": "default", "request": { - "contentType": "application/json", "description": "Example", "acceptHeader": "application/vnd.github.v3+json", - "bodyParameters": { - "status": "approve", - "message": "Used in tests." - }, "parameters": { "owner": "OWNER", "repo": "REPO", @@ -336845,28 +337760,15 @@ } }, "response": { - "statusCode": "200", - "contentType": "application/json", - "description": "

The review of the dismissal request.

", - "example": { - "dismissal_review_id": 1 - }, - "schema": { - "type": "object", - "properties": { - "dismissal_review_id": { - "type": "integer", - "description": "ID of the dismissal review." - } - } - } + "statusCode": "204", + "description": "

Dismissal request cancelled successfully.

" } } ], "statusCodes": [ { - "httpStatusCode": "200", - "description": "

The review of the dismissal request.

" + "httpStatusCode": "204", + "description": "

Dismissal request cancelled successfully.

" }, { "httpStatusCode": "403", @@ -336876,10 +337778,6 @@ "httpStatusCode": "404", "description": "

Resource not found

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

Validation failed, or the endpoint has been spammed.

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

Internal Error

" @@ -363311,7 +364209,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -363465,7 +364364,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -363604,7 +364504,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -363801,7 +364702,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -363987,7 +364889,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -364123,7 +365026,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -364233,7 +365137,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -364504,7 +365409,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -364664,7 +365570,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -364808,7 +365715,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -365008,7 +365916,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -365150,7 +366059,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -365263,7 +366173,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -516125,6 +517036,10 @@ "httpStatusCode": "200", "description": "

OK

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

Accepted

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

Forbidden

" @@ -516296,6 +517211,10 @@ "httpStatusCode": "200", "description": "

OK

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

Accepted

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

Forbidden

" @@ -516420,6 +517339,10 @@ "httpStatusCode": "200", "description": "

OK

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

Accepted

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

Forbidden

" @@ -516632,6 +517555,10 @@ "httpStatusCode": "200", "description": "

OK

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

Accepted

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

Forbidden

" @@ -539695,7 +540622,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -539848,7 +540776,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -539987,7 +540916,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -540173,7 +541103,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ @@ -540308,7 +541239,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -540418,7 +541350,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ], "description": "The type of the value for the property", "examples": [ diff --git a/src/rest/data/ghes-3.14-2022-11-28/schema.json b/src/rest/data/ghes-3.14-2022-11-28/schema.json index 06f169d218f5..ff36df0e45eb 100644 --- a/src/rest/data/ghes-3.14-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.14-2022-11-28/schema.json @@ -327867,6 +327867,15 @@ ], "default": "created" } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -329647,6 +329656,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -333448,6 +333466,12 @@ "name": "dismissed_comment", "in": "body", "description": "

The dismissal comment associated with the dismissal of the alert.

" + }, + { + "type": "array of strings", + "name": "assignees", + "in": "body", + "description": "

The list of users to assign to the code scanning alert. An empty array unassigns all previous assignees from the alert.

" } ], "descriptionHTML": "

Updates the status of a single code scanning alert.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", @@ -334551,10 +334575,9 @@ "string", "null" ], - "description": "State of a code scanning alert.", + "description": "State of a code scanning alert instance.", "enum": [ "open", - "dismissed", "fixed", null ] diff --git a/src/rest/data/ghes-3.15-2022-11-28/schema.json b/src/rest/data/ghes-3.15-2022-11-28/schema.json index ebb06b616464..58839f099005 100644 --- a/src/rest/data/ghes-3.15-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.15-2022-11-28/schema.json @@ -328613,6 +328613,15 @@ ], "default": "created" } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -330393,6 +330402,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -334194,6 +334212,12 @@ "name": "dismissed_comment", "in": "body", "description": "

The dismissal comment associated with the dismissal of the alert.

" + }, + { + "type": "array of strings", + "name": "assignees", + "in": "body", + "description": "

The list of users to assign to the code scanning alert. An empty array unassigns all previous assignees from the alert.

" } ], "descriptionHTML": "

Updates the status of a single code scanning alert.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", @@ -335297,10 +335321,9 @@ "string", "null" ], - "description": "State of a code scanning alert.", + "description": "State of a code scanning alert instance.", "enum": [ "open", - "dismissed", "fixed", null ] 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 4b903127e1ad..cd18fd3b1ca4 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 @@ -328711,6 +328711,15 @@ ], "default": "created" } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -330509,6 +330518,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -332339,6 +332357,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -334373,6 +334400,12 @@ "name": "dismissed_comment", "in": "body", "description": "

The dismissal comment associated with the dismissal of the alert.

" + }, + { + "type": "array of strings", + "name": "assignees", + "in": "body", + "description": "

The list of users to assign to the code scanning alert. An empty array unassigns all previous assignees from the alert.

" } ], "descriptionHTML": "

Updates the status of a single code scanning alert.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", @@ -335485,10 +335518,9 @@ "string", "null" ], - "description": "State of a code scanning alert.", + "description": "State of a code scanning alert instance.", "enum": [ "open", - "dismissed", "fixed", null ] diff --git a/src/rest/data/ghes-3.17-2022-11-28/schema.json b/src/rest/data/ghes-3.17-2022-11-28/schema.json index 467822bcfbca..490c7a7a7e6c 100644 --- a/src/rest/data/ghes-3.17-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.17-2022-11-28/schema.json @@ -329006,6 +329006,15 @@ ], "default": "created" } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -330804,6 +330813,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -332634,6 +332652,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -334668,6 +334695,12 @@ "name": "dismissed_comment", "in": "body", "description": "

The dismissal comment associated with the dismissal of the alert.

" + }, + { + "type": "array of strings", + "name": "assignees", + "in": "body", + "description": "

The list of users to assign to the code scanning alert. An empty array unassigns all previous assignees from the alert.

" } ], "descriptionHTML": "

Updates the status of a single code scanning alert.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", @@ -335780,10 +335813,9 @@ "string", "null" ], - "description": "State of a code scanning alert.", + "description": "State of a code scanning alert instance.", "enum": [ "open", - "dismissed", "fixed", null ] diff --git a/src/rest/data/ghes-3.18-2022-11-28/schema.json b/src/rest/data/ghes-3.18-2022-11-28/schema.json index d85459d71cef..700905784dea 100644 --- a/src/rest/data/ghes-3.18-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.18-2022-11-28/schema.json @@ -329111,6 +329111,15 @@ ], "default": "created" } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -330909,6 +330918,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -332739,6 +332757,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -334773,6 +334800,12 @@ "name": "dismissed_comment", "in": "body", "description": "

The dismissal comment associated with the dismissal of the alert.

" + }, + { + "type": "array of strings", + "name": "assignees", + "in": "body", + "description": "

The list of users to assign to the code scanning alert. An empty array unassigns all previous assignees from the alert.

" } ], "descriptionHTML": "

Updates the status of a single code scanning alert.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", @@ -335885,10 +335918,9 @@ "string", "null" ], - "description": "State of a code scanning alert.", + "description": "State of a code scanning alert instance.", "enum": [ "open", - "dismissed", "fixed", null ] diff --git a/src/rest/data/ghes-3.19-2022-11-28/schema.json b/src/rest/data/ghes-3.19-2022-11-28/schema.json index af48fe9d51e6..fed39654d140 100644 --- a/src/rest/data/ghes-3.19-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.19-2022-11-28/schema.json @@ -332632,6 +332632,15 @@ ], "default": "created" } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -334430,6 +334439,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -336260,6 +336278,15 @@ "error" ] } + }, + { + "name": "assignees", + "description": "

Filter alerts by assignees. Provide a comma-separated list of user handles (e.g., octocat or octocat,hubot).\nUse * to list alerts with at least one assignee or none to list alerts with no assignees.

", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "bodyParameters": [], @@ -338300,6 +338327,12 @@ "name": "create_request", "in": "body", "description": "

If true, attempt to create an alert dismissal request.

" + }, + { + "type": "array of strings", + "name": "assignees", + "in": "body", + "description": "

The list of users to assign to the code scanning alert. An empty array unassigns all previous assignees from the alert.

" } ], "descriptionHTML": "

Updates the status of a single code scanning alert.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", @@ -339413,10 +339446,9 @@ "string", "null" ], - "description": "State of a code scanning alert.", + "description": "State of a code scanning alert instance.", "enum": [ "open", - "dismissed", "fixed", null ] diff --git a/src/rest/lib/config.json b/src/rest/lib/config.json index 5cc46323a0e8..54bd639875c8 100644 --- a/src/rest/lib/config.json +++ b/src/rest/lib/config.json @@ -50,5 +50,5 @@ ] } }, - "sha": "b1e772fd7deb79fdcde54863353275d990299269" + "sha": "8fcf2850bf7699b117f63cd2f385f792dde1d760" } \ No newline at end of file diff --git a/src/webhooks/data/fpt/schema.json b/src/webhooks/data/fpt/schema.json index de10b97bc467..9cd034322fe2 100644 --- a/src/webhooks/data/fpt/schema.json +++ b/src/webhooks/data/fpt/schema.json @@ -15674,7 +15674,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -15864,7 +15865,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -15987,7 +15989,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { diff --git a/src/webhooks/data/ghec/schema.json b/src/webhooks/data/ghec/schema.json index dd9e58f55411..efb4f052803a 100644 --- a/src/webhooks/data/ghec/schema.json +++ b/src/webhooks/data/ghec/schema.json @@ -17753,7 +17753,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -17943,7 +17944,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -18066,7 +18068,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -121348,7 +121351,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { @@ -121513,7 +121517,8 @@ "string", "single_select", "multi_select", - "true_false" + "true_false", + "url" ] }, { diff --git a/src/webhooks/lib/config.json b/src/webhooks/lib/config.json index daba842d4620..ed98b8687bf3 100644 --- a/src/webhooks/lib/config.json +++ b/src/webhooks/lib/config.json @@ -1,3 +1,3 @@ { - "sha": "b1e772fd7deb79fdcde54863353275d990299269" + "sha": "8fcf2850bf7699b117f63cd2f385f792dde1d760" } \ No newline at end of file