From 5c17e4af71ff20139f2e9ed8df8095efb1120aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holly=20=F0=9F=A6=92?= <104800384+holly-kassel@users.noreply.github.com> Date: Wed, 26 Aug 2026 13:13:39 +0000 Subject: [PATCH 1/4] Document enterprise billing GitHub App permission (#62648) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> Copilot-Session: 8d74640c-cbfb-47e5-9687-3a437a79c7e8 --- content/billing/reference/billing-roles.md | 5 ++++ .../tutorials/automate-usage-reporting.md | 28 +++++++++++++++++-- .../enterprise-billing-github-app.yml | 7 +++++ .../enterprise-apps-capabilities.md | 3 ++ 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 data/features/enterprise-billing-github-app.yml diff --git a/content/billing/reference/billing-roles.md b/content/billing/reference/billing-roles.md index ca4354a9a475..db959fb1d405 100644 --- a/content/billing/reference/billing-roles.md +++ b/content/billing/reference/billing-roles.md @@ -28,6 +28,11 @@ To add a billing manager, see: * [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/adding-a-billing-manager-to-your-organization#inviting-a-billing-manager) * [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/inviting-people-to-manage-your-enterprise) +{% ifversion enterprise-billing-github-app %} + +Enterprise owners can also grant a {% data variables.product.prodname_github_app %} the enterprise billing permission, so that an app can access enterprise billing data through the REST API without using a token that belongs to an individual. For more information, see [AUTOTITLE](/billing/tutorials/automate-usage-reporting). +{% endif %} + ## Organization owners You have full administrative access to your organization. You can: diff --git a/content/billing/tutorials/automate-usage-reporting.md b/content/billing/tutorials/automate-usage-reporting.md index 818873118559..2465ead637a7 100644 --- a/content/billing/tutorials/automate-usage-reporting.md +++ b/content/billing/tutorials/automate-usage-reporting.md @@ -28,10 +28,34 @@ Before you begin this tutorial, make sure that: * Enterprise-level reports: enterprise administrator or billing manager * You’re familiar with making authenticated requests to the REST API. For an introduction, see [AUTOTITLE](/rest/using-the-rest-api). -* You authenticate using a {% data variables.product.pat_v1 %}. The billing usage endpoints do not support {% data variables.product.pat_v2_plural %}. +* You authenticate using a {% data variables.product.pat_v1 %}. The billing usage endpoints do not support {% data variables.product.pat_v2_plural %}.{% ifversion enterprise-billing-github-app %} For enterprise-level reporting, you can authenticate with a {% data variables.product.prodname_github_app %} instead. See [Authenticating with a {% data variables.product.prodname_github_app %}](#authenticating-with-a-github-app).{% endif %} Depending on your reporting needs, you may also want access to an internal system (such as a spreadsheet, database, or BI tool) where you can store and analyze the usage data retrieved from the API. +{% ifversion enterprise-billing-github-app %} + +## Authenticating with a {% data variables.product.prodname_github_app %} + +For enterprise-level reporting, you can authenticate with a {% data variables.product.prodname_github_app %} instead of a {% data variables.product.pat_generic %}. Your automation then does not depend on a token that belongs to an individual enterprise owner or billing manager, so your reports keep running when someone changes role or leaves the enterprise. + +An enterprise owner can grant an app the enterprise billing permission at one of two levels of access: + +* **Read**: The app can retrieve usage reports, budgets, and cost centers. This is the access the reporting in this tutorial requires. +* **Read and write**: The app can create, update, and delete budgets and cost centers, and add or remove resources from cost centers. + +To report on usage with an app: + +1. Register a {% data variables.product.prodname_github_app %} that requests the enterprise billing permission. See [AUTOTITLE](/apps/creating-github-apps/registering-a-github-app/registering-a-github-app). +1. Ask an enterprise owner to install the app on your enterprise. See [AUTOTITLE](/apps/using-github-apps/installing-a-github-app-on-your-enterprise). +1. Generate an installation access token for the enterprise installation. See [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/generating-an-installation-access-token-for-a-github-app). +1. Send the installation access token in the `Authorization` header of your requests, in place of a {% data variables.product.pat_generic %}. + +An installation access token expires after one hour, so your automation must generate a new token each time it runs or whenever the current token expires. + +For the endpoints an app can call with each permission, see [AUTOTITLE](/rest/authentication/permissions-required-for-github-apps). + +{% endif %} + ## Step 1: Decide what level to report on Decide which account level you want to report on. This determines **which REST API endpoint you’ll call** and what your report will include. @@ -76,7 +100,7 @@ curl -L \ https://api.github.com/enterprises/ENTERPRISE/settings/billing/usage/summary ``` -Replace `ENTERPRISE` with the enterprise slug and set the `GITHUB_TOKEN` environment variable to a {% data variables.product.pat_generic %} with the required billing permissions. +Replace `ENTERPRISE` with the enterprise slug and set the `GITHUB_TOKEN` environment variable to a {% data variables.product.pat_generic %} with the required billing permissions.{% ifversion enterprise-billing-github-app %} Alternatively, set `GITHUB_TOKEN` to an installation access token from a {% data variables.product.prodname_github_app %} with the enterprise billing permission.{% endif %} **Example using the {% data variables.product.prodname_cli %}** diff --git a/data/features/enterprise-billing-github-app.yml b/data/features/enterprise-billing-github-app.yml new file mode 100644 index 000000000000..4bae67583c0d --- /dev/null +++ b/data/features/enterprise-billing-github-app.yml @@ -0,0 +1,7 @@ +# Reference: #releases/issues/10425 +# Enterprise owners can grant a GitHub App the enterprise billing fine-grained permission +# (Read, or Read and write) so that an app installation access token can call the enterprise +# billing REST API routes. +versions: + ghec: '*' + ghes: '>=3.23' diff --git a/data/reusables/enterprise-accounts/enterprise-apps-capabilities.md b/data/reusables/enterprise-accounts/enterprise-apps-capabilities.md index 094ea1a36084..92167705bd5f 100644 --- a/data/reusables/enterprise-accounts/enterprise-apps-capabilities.md +++ b/data/reusables/enterprise-accounts/enterprise-apps-capabilities.md @@ -4,6 +4,9 @@ Enterprise-installed {% data variables.product.prodname_github_apps %} cannot ca * [Manage users in your enterprise](/graphql/reference/enterprise-admin#object-enterprise) * Create and manage {% data variables.product.prodname_github_app %} installations in your organizations * Manage enterprise custom repository properties +{%- ifversion enterprise-billing-github-app %} +* Manage enterprise billing, including budgets, cost centers, and usage reports. For more information, see [AUTOTITLE](/rest/billing). +{%- endif %} * Call the enterprise SCIM APIs Check the [changelog](https://github.blog/changelog/) for updates on new APIs and permissions for {% data variables.product.prodname_github_apps %}. From 12e8cfbadc039adfe6982b70b981864f69f24201 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Aug 2026 16:02:12 +0000 Subject: [PATCH 2/4] Bump actions/ai-inference from 2.1.0 to 3 in the actions group (#62924) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/changelog-agent.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog-agent.yml b/.github/workflows/changelog-agent.yml index 746bd40e7cb5..e3894303e0f3 100644 --- a/.github/workflows/changelog-agent.yml +++ b/.github/workflows/changelog-agent.yml @@ -417,7 +417,7 @@ jobs: - name: Generate changelog draft via Copilot if: steps.check_parent.outputs.has_parent == 'true' && steps.check_existing.outputs.exists == 'false' id: generate_draft - uses: actions/ai-inference@17ff458cb182449bbb2e43701fcd98f6af8f6570 # v2.1.0 + uses: actions/ai-inference@2c43c91ae16266ca159d311430343c67a5ffa222 # v3 with: provider: copilot # No model is pinned: actions/ai-inference forwards --model to the From dc61498dcaa479c878085f81acf00f258de73028 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Wed, 26 Aug 2026 17:07:10 +0000 Subject: [PATCH 3/4] GraphQL schema update (#62936) Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- src/graphql/data/fpt/category-map.json | 4 + src/graphql/data/fpt/changelog.json | 31 +++++ .../data/fpt/schema-enterprise-admin.json | 9 ++ src/graphql/data/fpt/schema-issues.json | 128 ++++++++++++++++++ src/graphql/data/fpt/schema.docs.graphql | 98 ++++++++++++++ src/graphql/data/ghec/category-map.json | 4 + .../data/ghec/schema-enterprise-admin.json | 9 ++ src/graphql/data/ghec/schema-issues.json | 128 ++++++++++++++++++ src/graphql/data/ghec/schema.docs.graphql | 98 ++++++++++++++ 9 files changed, 509 insertions(+) diff --git a/src/graphql/data/fpt/category-map.json b/src/graphql/data/fpt/category-map.json index 179e7de6f2d6..5ce682b165ac 100644 --- a/src/graphql/data/fpt/category-map.json +++ b/src/graphql/data/fpt/category-map.json @@ -128,6 +128,7 @@ "startrepositorymigration": "migrations", "addassigneestoassignable": "issues", "addblockedby": "issues", + "addcloseissuereferences": "issues", "addcomment": "issues", "addlabelstolabelable": "issues", "addsubissue": "issues", @@ -154,6 +155,7 @@ "rejectpendingissuesuggestions": "issues", "removeassigneesfromassignable": "issues", "removeblockedby": "issues", + "removecloseissuereferences": "issues", "removelabelsfromlabelable": "issues", "removesubissue": "issues", "reopenissue": "issues", @@ -1572,6 +1574,7 @@ "startrepositorymigrationinput": "migrations", "addassigneestoassignableinput": "issues", "addblockedbyinput": "issues", + "addcloseissuereferencesinput": "issues", "addcommentinput": "issues", "addlabelstolabelableinput": "issues", "addsubissueinput": "issues", @@ -1615,6 +1618,7 @@ "rejectpendingissuesuggestionsinput": "issues", "removeassigneesfromassignableinput": "issues", "removeblockedbyinput": "issues", + "removecloseissuereferencesinput": "issues", "removelabelsfromlabelableinput": "issues", "removesubissueinput": "issues", "reopenissueinput": "issues", diff --git a/src/graphql/data/fpt/changelog.json b/src/graphql/data/fpt/changelog.json index 80d69e3e0355..66bc8c7d59fc 100644 --- a/src/graphql/data/fpt/changelog.json +++ b/src/graphql/data/fpt/changelog.json @@ -1,4 +1,35 @@ [ + { + "schemaChanges": [ + { + "title": "The GraphQL schema includes these changes:", + "changes": [ + "

Type AddCloseIssueReferencesInput was added

", + "

Input field clientMutationId of type String was added to input object type AddCloseIssueReferencesInput

", + "

Input field issueId of type ID! was added to input object type AddCloseIssueReferencesInput

", + "

Input field pullRequestIds of type '[ID!]!was added to input object typeAddCloseIssueReferencesInput'

", + "

Type AddCloseIssueReferencesPayload was added

", + "

Field clientMutationId was added to object type AddCloseIssueReferencesPayload

", + "

Field issue was added to object type AddCloseIssueReferencesPayload

", + "

Type RemoveCloseIssueReferencesInput was added

", + "

Input field clientMutationId of type String was added to input object type RemoveCloseIssueReferencesInput

", + "

Input field issueId of type ID! was added to input object type RemoveCloseIssueReferencesInput

", + "

Input field pullRequestIds of type '[ID!]!was added to input object typeRemoveCloseIssueReferencesInput'

", + "

Type RemoveCloseIssueReferencesPayload was added

", + "

Field clientMutationId was added to object type RemoveCloseIssueReferencesPayload

", + "

Field issue was added to object type RemoveCloseIssueReferencesPayload

", + "

Argument 'userLogins: [String!]added to fieldEnterprise.enterpriseTeams'

", + "

Field addCloseIssueReferences was added to object type Mutation

", + "

Argument input: AddCloseIssueReferencesInput! added to field Mutation.addCloseIssueReferences

", + "

Field removeCloseIssueReferences was added to object type Mutation

", + "

Argument input: RemoveCloseIssueReferencesInput! added to field Mutation.removeCloseIssueReferences

" + ] + } + ], + "previewChanges": [], + "upcomingChanges": [], + "date": "2026-08-26" + }, { "schemaChanges": [ { diff --git a/src/graphql/data/fpt/schema-enterprise-admin.json b/src/graphql/data/fpt/schema-enterprise-admin.json index 94793fd5ef18..de00a0030132 100644 --- a/src/graphql/data/fpt/schema-enterprise-admin.json +++ b/src/graphql/data/fpt/schema-enterprise-admin.json @@ -1957,6 +1957,15 @@ "id": "string", "href": "/graphql/reference/other#scalar-string" } + }, + { + "name": "userLogins", + "description": "

User logins to filter by. A maximum of 3 logins can be passed.

", + "type": { + "name": "[String!]", + "id": "string", + "href": "/graphql/reference/other#scalar-string" + } } ] }, diff --git a/src/graphql/data/fpt/schema-issues.json b/src/graphql/data/fpt/schema-issues.json index 04500b4b6219..1fe82dab7119 100644 --- a/src/graphql/data/fpt/schema-issues.json +++ b/src/graphql/data/fpt/schema-issues.json @@ -71,6 +71,38 @@ ], "category": "issues" }, + { + "name": "addCloseIssueReferences", + "id": "addcloseissuereferences", + "href": "/graphql/reference/issues#mutation-addcloseissuereferences", + "description": "

Adds one or more pull requests as manually linked closing references on an\nissue. The target must be an issue, not a pull request.

", + "isDeprecated": false, + "inputFields": [ + { + "name": "input", + "type": "AddCloseIssueReferencesInput!", + "id": "addcloseissuereferencesinput", + "href": "/graphql/reference/issues#input-object-addcloseissuereferencesinput" + } + ], + "returnFields": [ + { + "name": "clientMutationId", + "type": "String", + "id": "string", + "href": "/graphql/reference/other#scalar-string", + "description": "

A unique identifier for the client performing the mutation.

" + }, + { + "name": "issue", + "type": "Issue", + "id": "issue", + "href": "/graphql/reference/issues#object-issue", + "description": "

The issue the closing references were added to.

" + } + ], + "category": "issues" + }, { "name": "addComment", "id": "addcomment", @@ -945,6 +977,38 @@ ], "category": "issues" }, + { + "name": "removeCloseIssueReferences", + "id": "removecloseissuereferences", + "href": "/graphql/reference/issues#mutation-removecloseissuereferences", + "description": "

Removes one or more manually linked pull requests from an issue. Auto-detected\nclosing references from pull request body keywords are not removed; edit the\npull request body instead.

", + "isDeprecated": false, + "inputFields": [ + { + "name": "input", + "type": "RemoveCloseIssueReferencesInput!", + "id": "removecloseissuereferencesinput", + "href": "/graphql/reference/issues#input-object-removecloseissuereferencesinput" + } + ], + "returnFields": [ + { + "name": "clientMutationId", + "type": "String", + "id": "string", + "href": "/graphql/reference/other#scalar-string", + "description": "

A unique identifier for the client performing the mutation.

" + }, + { + "name": "issue", + "type": "Issue", + "id": "issue", + "href": "/graphql/reference/issues#object-issue", + "description": "

The issue the closing references were removed from.

" + } + ], + "category": "issues" + }, { "name": "removeLabelsFromLabelable", "id": "removelabelsfromlabelable", @@ -11242,6 +11306,38 @@ ], "category": "issues" }, + { + "name": "AddCloseIssueReferencesInput", + "id": "addcloseissuereferencesinput", + "href": "/graphql/reference/issues#input-object-addcloseissuereferencesinput", + "description": "

Autogenerated input type of AddCloseIssueReferences.

", + "inputFields": [ + { + "name": "clientMutationId", + "description": "

A unique identifier for the client performing the mutation.

", + "type": "String", + "id": "string", + "href": "/graphql/reference/other#scalar-string" + }, + { + "name": "issueId", + "description": "

ID of the issue to add closing references to.

", + "type": "ID!", + "id": "id", + "href": "/graphql/reference/other#scalar-id", + "isDeprecated": false + }, + { + "name": "pullRequestIds", + "description": "

IDs of the pull requests to link as closing references. Limit: 10.

", + "type": "[ID!]!", + "id": "id", + "href": "/graphql/reference/other#scalar-id", + "isDeprecated": false + } + ], + "category": "issues" + }, { "name": "AddCommentInput", "id": "addcommentinput", @@ -12904,6 +13000,38 @@ ], "category": "issues" }, + { + "name": "RemoveCloseIssueReferencesInput", + "id": "removecloseissuereferencesinput", + "href": "/graphql/reference/issues#input-object-removecloseissuereferencesinput", + "description": "

Autogenerated input type of RemoveCloseIssueReferences.

", + "inputFields": [ + { + "name": "clientMutationId", + "description": "

A unique identifier for the client performing the mutation.

", + "type": "String", + "id": "string", + "href": "/graphql/reference/other#scalar-string" + }, + { + "name": "issueId", + "description": "

ID of the issue to remove closing references from.

", + "type": "ID!", + "id": "id", + "href": "/graphql/reference/other#scalar-id", + "isDeprecated": false + }, + { + "name": "pullRequestIds", + "description": "

IDs of manually linked pull requests to remove. Auto-detected closing references are left unchanged. Limit: 10.

", + "type": "[ID!]!", + "id": "id", + "href": "/graphql/reference/other#scalar-id", + "isDeprecated": false + } + ], + "category": "issues" + }, { "name": "RemoveLabelsFromLabelableInput", "id": "removelabelsfromlabelableinput", diff --git a/src/graphql/data/fpt/schema.docs.graphql b/src/graphql/data/fpt/schema.docs.graphql index 9dede9a4ec6d..ba25a856c69b 100644 --- a/src/graphql/data/fpt/schema.docs.graphql +++ b/src/graphql/data/fpt/schema.docs.graphql @@ -451,6 +451,41 @@ type AddBlockedByPayload { issue: Issue } +""" +Autogenerated input type of AddCloseIssueReferences +""" +input AddCloseIssueReferencesInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the issue to add closing references to. + """ + issueId: ID! @possibleTypes(concreteTypes: ["Issue"]) + + """ + IDs of the pull requests to link as closing references. Limit: 10. + """ + pullRequestIds: [ID!]! @possibleTypes(concreteTypes: ["PullRequest"]) +} + +""" +Autogenerated return type of AddCloseIssueReferences. +""" +type AddCloseIssueReferencesPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue the closing references were added to. + """ + issue: Issue +} + """ Autogenerated input type of AddComment """ @@ -14208,6 +14243,11 @@ type Enterprise implements Node @docsCategory(name: "enterprise-admin") { The search string to look for. """ query: String + + """ + User logins to filter by. A maximum of 3 logins can be passed. + """ + userLogins: [String!] ): EnterpriseTeamConnection! """ @@ -27221,6 +27261,17 @@ type Mutation @docsCategory(name: "meta") { input: AddBlockedByInput! ): AddBlockedByPayload @docsCategory(name: "issues") + """ + Adds one or more pull requests as manually linked closing references on an + issue. The target must be an issue, not a pull request. + """ + addCloseIssueReferences( + """ + Parameters for AddCloseIssueReferences + """ + input: AddCloseIssueReferencesInput! + ): AddCloseIssueReferencesPayload @docsCategory(name: "issues") + """ Adds a comment to an Issue or Pull Request. """ @@ -28752,6 +28803,18 @@ type Mutation @docsCategory(name: "meta") { input: RemoveBlockedByInput! ): RemoveBlockedByPayload @docsCategory(name: "issues") + """ + Removes one or more manually linked pull requests from an issue. Auto-detected + closing references from pull request body keywords are not removed; edit the + pull request body instead. + """ + removeCloseIssueReferences( + """ + Parameters for RemoveCloseIssueReferences + """ + input: RemoveCloseIssueReferencesInput! + ): RemoveCloseIssueReferencesPayload @docsCategory(name: "issues") + """ Removes an administrator from the enterprise. """ @@ -49920,6 +49983,41 @@ type RemoveBlockedByPayload { issue: Issue } +""" +Autogenerated input type of RemoveCloseIssueReferences +""" +input RemoveCloseIssueReferencesInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the issue to remove closing references from. + """ + issueId: ID! @possibleTypes(concreteTypes: ["Issue"]) + + """ + IDs of manually linked pull requests to remove. Auto-detected closing references are left unchanged. Limit: 10. + """ + pullRequestIds: [ID!]! @possibleTypes(concreteTypes: ["PullRequest"]) +} + +""" +Autogenerated return type of RemoveCloseIssueReferences. +""" +type RemoveCloseIssueReferencesPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue the closing references were removed from. + """ + issue: Issue +} + """ Autogenerated input type of RemoveEnterpriseAdmin """ diff --git a/src/graphql/data/ghec/category-map.json b/src/graphql/data/ghec/category-map.json index 179e7de6f2d6..5ce682b165ac 100644 --- a/src/graphql/data/ghec/category-map.json +++ b/src/graphql/data/ghec/category-map.json @@ -128,6 +128,7 @@ "startrepositorymigration": "migrations", "addassigneestoassignable": "issues", "addblockedby": "issues", + "addcloseissuereferences": "issues", "addcomment": "issues", "addlabelstolabelable": "issues", "addsubissue": "issues", @@ -154,6 +155,7 @@ "rejectpendingissuesuggestions": "issues", "removeassigneesfromassignable": "issues", "removeblockedby": "issues", + "removecloseissuereferences": "issues", "removelabelsfromlabelable": "issues", "removesubissue": "issues", "reopenissue": "issues", @@ -1572,6 +1574,7 @@ "startrepositorymigrationinput": "migrations", "addassigneestoassignableinput": "issues", "addblockedbyinput": "issues", + "addcloseissuereferencesinput": "issues", "addcommentinput": "issues", "addlabelstolabelableinput": "issues", "addsubissueinput": "issues", @@ -1615,6 +1618,7 @@ "rejectpendingissuesuggestionsinput": "issues", "removeassigneesfromassignableinput": "issues", "removeblockedbyinput": "issues", + "removecloseissuereferencesinput": "issues", "removelabelsfromlabelableinput": "issues", "removesubissueinput": "issues", "reopenissueinput": "issues", diff --git a/src/graphql/data/ghec/schema-enterprise-admin.json b/src/graphql/data/ghec/schema-enterprise-admin.json index 94793fd5ef18..de00a0030132 100644 --- a/src/graphql/data/ghec/schema-enterprise-admin.json +++ b/src/graphql/data/ghec/schema-enterprise-admin.json @@ -1957,6 +1957,15 @@ "id": "string", "href": "/graphql/reference/other#scalar-string" } + }, + { + "name": "userLogins", + "description": "

User logins to filter by. A maximum of 3 logins can be passed.

", + "type": { + "name": "[String!]", + "id": "string", + "href": "/graphql/reference/other#scalar-string" + } } ] }, diff --git a/src/graphql/data/ghec/schema-issues.json b/src/graphql/data/ghec/schema-issues.json index 04500b4b6219..1fe82dab7119 100644 --- a/src/graphql/data/ghec/schema-issues.json +++ b/src/graphql/data/ghec/schema-issues.json @@ -71,6 +71,38 @@ ], "category": "issues" }, + { + "name": "addCloseIssueReferences", + "id": "addcloseissuereferences", + "href": "/graphql/reference/issues#mutation-addcloseissuereferences", + "description": "

Adds one or more pull requests as manually linked closing references on an\nissue. The target must be an issue, not a pull request.

", + "isDeprecated": false, + "inputFields": [ + { + "name": "input", + "type": "AddCloseIssueReferencesInput!", + "id": "addcloseissuereferencesinput", + "href": "/graphql/reference/issues#input-object-addcloseissuereferencesinput" + } + ], + "returnFields": [ + { + "name": "clientMutationId", + "type": "String", + "id": "string", + "href": "/graphql/reference/other#scalar-string", + "description": "

A unique identifier for the client performing the mutation.

" + }, + { + "name": "issue", + "type": "Issue", + "id": "issue", + "href": "/graphql/reference/issues#object-issue", + "description": "

The issue the closing references were added to.

" + } + ], + "category": "issues" + }, { "name": "addComment", "id": "addcomment", @@ -945,6 +977,38 @@ ], "category": "issues" }, + { + "name": "removeCloseIssueReferences", + "id": "removecloseissuereferences", + "href": "/graphql/reference/issues#mutation-removecloseissuereferences", + "description": "

Removes one or more manually linked pull requests from an issue. Auto-detected\nclosing references from pull request body keywords are not removed; edit the\npull request body instead.

", + "isDeprecated": false, + "inputFields": [ + { + "name": "input", + "type": "RemoveCloseIssueReferencesInput!", + "id": "removecloseissuereferencesinput", + "href": "/graphql/reference/issues#input-object-removecloseissuereferencesinput" + } + ], + "returnFields": [ + { + "name": "clientMutationId", + "type": "String", + "id": "string", + "href": "/graphql/reference/other#scalar-string", + "description": "

A unique identifier for the client performing the mutation.

" + }, + { + "name": "issue", + "type": "Issue", + "id": "issue", + "href": "/graphql/reference/issues#object-issue", + "description": "

The issue the closing references were removed from.

" + } + ], + "category": "issues" + }, { "name": "removeLabelsFromLabelable", "id": "removelabelsfromlabelable", @@ -11242,6 +11306,38 @@ ], "category": "issues" }, + { + "name": "AddCloseIssueReferencesInput", + "id": "addcloseissuereferencesinput", + "href": "/graphql/reference/issues#input-object-addcloseissuereferencesinput", + "description": "

Autogenerated input type of AddCloseIssueReferences.

", + "inputFields": [ + { + "name": "clientMutationId", + "description": "

A unique identifier for the client performing the mutation.

", + "type": "String", + "id": "string", + "href": "/graphql/reference/other#scalar-string" + }, + { + "name": "issueId", + "description": "

ID of the issue to add closing references to.

", + "type": "ID!", + "id": "id", + "href": "/graphql/reference/other#scalar-id", + "isDeprecated": false + }, + { + "name": "pullRequestIds", + "description": "

IDs of the pull requests to link as closing references. Limit: 10.

", + "type": "[ID!]!", + "id": "id", + "href": "/graphql/reference/other#scalar-id", + "isDeprecated": false + } + ], + "category": "issues" + }, { "name": "AddCommentInput", "id": "addcommentinput", @@ -12904,6 +13000,38 @@ ], "category": "issues" }, + { + "name": "RemoveCloseIssueReferencesInput", + "id": "removecloseissuereferencesinput", + "href": "/graphql/reference/issues#input-object-removecloseissuereferencesinput", + "description": "

Autogenerated input type of RemoveCloseIssueReferences.

", + "inputFields": [ + { + "name": "clientMutationId", + "description": "

A unique identifier for the client performing the mutation.

", + "type": "String", + "id": "string", + "href": "/graphql/reference/other#scalar-string" + }, + { + "name": "issueId", + "description": "

ID of the issue to remove closing references from.

", + "type": "ID!", + "id": "id", + "href": "/graphql/reference/other#scalar-id", + "isDeprecated": false + }, + { + "name": "pullRequestIds", + "description": "

IDs of manually linked pull requests to remove. Auto-detected closing references are left unchanged. Limit: 10.

", + "type": "[ID!]!", + "id": "id", + "href": "/graphql/reference/other#scalar-id", + "isDeprecated": false + } + ], + "category": "issues" + }, { "name": "RemoveLabelsFromLabelableInput", "id": "removelabelsfromlabelableinput", diff --git a/src/graphql/data/ghec/schema.docs.graphql b/src/graphql/data/ghec/schema.docs.graphql index 9dede9a4ec6d..ba25a856c69b 100644 --- a/src/graphql/data/ghec/schema.docs.graphql +++ b/src/graphql/data/ghec/schema.docs.graphql @@ -451,6 +451,41 @@ type AddBlockedByPayload { issue: Issue } +""" +Autogenerated input type of AddCloseIssueReferences +""" +input AddCloseIssueReferencesInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the issue to add closing references to. + """ + issueId: ID! @possibleTypes(concreteTypes: ["Issue"]) + + """ + IDs of the pull requests to link as closing references. Limit: 10. + """ + pullRequestIds: [ID!]! @possibleTypes(concreteTypes: ["PullRequest"]) +} + +""" +Autogenerated return type of AddCloseIssueReferences. +""" +type AddCloseIssueReferencesPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue the closing references were added to. + """ + issue: Issue +} + """ Autogenerated input type of AddComment """ @@ -14208,6 +14243,11 @@ type Enterprise implements Node @docsCategory(name: "enterprise-admin") { The search string to look for. """ query: String + + """ + User logins to filter by. A maximum of 3 logins can be passed. + """ + userLogins: [String!] ): EnterpriseTeamConnection! """ @@ -27221,6 +27261,17 @@ type Mutation @docsCategory(name: "meta") { input: AddBlockedByInput! ): AddBlockedByPayload @docsCategory(name: "issues") + """ + Adds one or more pull requests as manually linked closing references on an + issue. The target must be an issue, not a pull request. + """ + addCloseIssueReferences( + """ + Parameters for AddCloseIssueReferences + """ + input: AddCloseIssueReferencesInput! + ): AddCloseIssueReferencesPayload @docsCategory(name: "issues") + """ Adds a comment to an Issue or Pull Request. """ @@ -28752,6 +28803,18 @@ type Mutation @docsCategory(name: "meta") { input: RemoveBlockedByInput! ): RemoveBlockedByPayload @docsCategory(name: "issues") + """ + Removes one or more manually linked pull requests from an issue. Auto-detected + closing references from pull request body keywords are not removed; edit the + pull request body instead. + """ + removeCloseIssueReferences( + """ + Parameters for RemoveCloseIssueReferences + """ + input: RemoveCloseIssueReferencesInput! + ): RemoveCloseIssueReferencesPayload @docsCategory(name: "issues") + """ Removes an administrator from the enterprise. """ @@ -49920,6 +49983,41 @@ type RemoveBlockedByPayload { issue: Issue } +""" +Autogenerated input type of RemoveCloseIssueReferences +""" +input RemoveCloseIssueReferencesInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the issue to remove closing references from. + """ + issueId: ID! @possibleTypes(concreteTypes: ["Issue"]) + + """ + IDs of manually linked pull requests to remove. Auto-detected closing references are left unchanged. Limit: 10. + """ + pullRequestIds: [ID!]! @possibleTypes(concreteTypes: ["PullRequest"]) +} + +""" +Autogenerated return type of RemoveCloseIssueReferences. +""" +type RemoveCloseIssueReferencesPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue the closing references were removed from. + """ + issue: Issue +} + """ Autogenerated input type of RemoveEnterpriseAdmin """ From 519cc82488f7aae42d7d4ab3460c845c16d03182 Mon Sep 17 00:00:00 2001 From: Nhu Do Date: Wed, 26 Aug 2026 17:18:38 +0000 Subject: [PATCH 4/4] Update available models in Auto (#62930) Co-authored-by: Jenni C <97056108+dihydroJenoxide@users.noreply.github.com> --- .../reference/ai-models/supported-models.md | 2 +- data/tables/copilot/auto-model-selection.yml | 21 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/content/copilot/reference/ai-models/supported-models.md b/content/copilot/reference/ai-models/supported-models.md index 437348e10ee5..ddf586e41d1c 100644 --- a/content/copilot/reference/ai-models/supported-models.md +++ b/content/copilot/reference/ai-models/supported-models.md @@ -48,7 +48,7 @@ This table lists the AI models available in {% data variables.product.prodname_c ## Supported AI models in {% data variables.copilot.copilot_auto_model_selection_short_cap_a %} -This table lists the supported AI models for {% data variables.copilot.copilot_auto_model_selection_short_cap_a %}. Available models may be limited by model policies. See [AUTOTITLE](/copilot/concepts/models/auto-model-selection). +This table lists the supported AI models for {% data variables.copilot.copilot_auto_model_selection_short_cap_a %}. Available models may be limited by model policies. For example, as the long term support model, GPT-5.3-Codex will be used in the event no other models are available. See[AUTOTITLE](/copilot/concepts/models/fallback-and-lts-models) and [AUTOTITLE](/copilot/concepts/models/auto-model-selection). {% rowheaders %} diff --git a/data/tables/copilot/auto-model-selection.yml b/data/tables/copilot/auto-model-selection.yml index 395d90358523..21ddb9b2488d 100644 --- a/data/tables/copilot/auto-model-selection.yml +++ b/data/tables/copilot/auto-model-selection.yml @@ -28,7 +28,7 @@ - name: GPT-5.3-Codex cloud_agent: true chat: true - cli: true + cli: false app: true - name: GPT-5.4 @@ -74,6 +74,12 @@ cli: true app: true +- name: Claude Opus 4.8 + cloud_agent: false + chat: true + cli: true + app: false + - name: Claude Opus 5 cloud_agent: false chat: true @@ -92,6 +98,19 @@ cli: true app: false +# Google +- name: Gemini 3.6 Flash + cloud_agent: false + chat: true + cli: true + app: false + +- name: Gemini 3.7 Flash + cloud_agent: false + chat: true + cli: true + app: false + # Microsoft - name: MAI-Code-1.1-Flash cloud_agent: true