diff --git a/content/graphql/guides/forming-calls-with-graphql.md b/content/graphql/guides/forming-calls-with-graphql.md index 21b786568eb7..9c08c380064f 100644 --- a/content/graphql/guides/forming-calls-with-graphql.md +++ b/content/graphql/guides/forming-calls-with-graphql.md @@ -112,9 +112,6 @@ For a real-world example, see [Example mutation](#example-mutation). [Variables](https://graphql.org/learn/queries/#variables) can make queries more dynamic and powerful, and they can reduce complexity when passing mutation input objects. -> [!NOTE] -> If you're using the Explorer, make sure to enter variables in the separate [Query Variables pane](/graphql/guides/using-the-explorer#using-the-variable-pane), and do not include the word `variables` before the JSON object. - Here's an example query with a single variable: ```graphql @@ -269,9 +266,6 @@ mutation AddReactionToIssue { } ``` -> [!TIP] -> Although you can include a query and a mutation in the same Explorer window if you give them names (`FindIssueID` and `AddReactionToIssue` in this example), the operations will be executed as separate calls to the GraphQL endpoint. It's not possible to perform a query at the same time as a mutation, or vice versa. - Let's walk through the example. The task sounds simple: add an emoji reaction to an issue. So how do we know to begin with a query? We don't, yet. @@ -294,7 +288,7 @@ Let's examine the query line by line: * `query FindIssueID {` - Here we're performing a query, and we name it `FindIssueID`. Note that naming a query is optional; we give it a name here so that we can include it in same Explorer window as the mutation. + Here we're performing a query, and we name it `FindIssueID`. Note that naming a query is optional; we give it a name here so that we can include it in same GUI client window as the mutation. * `repository(owner:"octocat", name:"Hello-World") {` @@ -317,7 +311,7 @@ With the ID known, we can proceed with the mutation: * `mutation AddReactionToIssue {` - Here we're performing a mutation, and we name it `AddReactionToIssue`. As with queries, naming a mutation is optional; we give it a name here so we can include it in the same Explorer window as the query. + Here we're performing a mutation, and we name it `AddReactionToIssue`. As with queries, naming a mutation is optional; we give it a name here so we can include it in the same GUI client window as the query. * `addReaction(input:{subjectId:"MDU6SXNzdWUyMzEzOTE1NTE=",content:HOORAY}) {` diff --git a/content/graphql/guides/using-graphql-clients.md b/content/graphql/guides/using-graphql-clients.md index 8cb9ddcad315..c0ef9bb7c8a3 100644 --- a/content/graphql/guides/using-graphql-clients.md +++ b/content/graphql/guides/using-graphql-clients.md @@ -4,6 +4,7 @@ intro: 'You can run queries on real {% data variables.product.prodname_dotcom %} redirect_from: - /v4/guides/using-the-explorer - /graphql/guides/using-the-explorer + - /graphql/overview/explorer versions: fpt: '*' ghec: '*' @@ -12,6 +13,10 @@ topics: - API --- + +> [!WARNING] +> The GraphQL Explorer was removed from the documentation on November 11, 2025. See our [changelog announcement](https://github.blog/changelog/2025-11-07-graphql-explorer-removal-from-api-documentation-on-november-7-2025). + ## Using GraphQL client IDEs There are many open-source GraphQL client IDEs you can use to access {% data variables.product.company_short %}'s GraphQL API. diff --git a/content/graphql/index.md b/content/graphql/index.md index d7f6bef63e09..8e196a02cc04 100644 --- a/content/graphql/index.md +++ b/content/graphql/index.md @@ -10,7 +10,6 @@ featuredLinks: - /graphql/guides/introduction-to-graphql - /graphql/guides/using-graphql-clients popular: - - /graphql/overview/explorer - /graphql/overview/public-schema - /graphql/guides/using-pagination-in-the-graphql-api guideCards: diff --git a/content/graphql/overview/about-the-graphql-api.md b/content/graphql/overview/about-the-graphql-api.md index cf055f2cec77..45088544a592 100644 --- a/content/graphql/overview/about-the-graphql-api.md +++ b/content/graphql/overview/about-the-graphql-api.md @@ -49,8 +49,6 @@ The docs in the sidebar are generated from the {% data variables.product.prodnam * Schema-defined types: [scalars](/graphql/reference/scalars), [objects](/graphql/reference/objects), [enums](/graphql/reference/enums), [interfaces](/graphql/reference/interfaces), [unions](/graphql/reference/unions), and [input objects](/graphql/reference/input-objects). -You can access this same content via the [Explorer Docs sidebar](/graphql/guides/using-the-explorer#accessing-the-sidebar-docs). Note that you may need to rely on both the docs and the schema validation to successfully call the GraphQL API. - For other information, such as authentication and rate limit details, check out the [guides](/graphql/guides). ## Requesting support diff --git a/content/graphql/overview/explorer.md b/content/graphql/overview/explorer.md deleted file mode 100644 index c1795a6ef99d..000000000000 --- a/content/graphql/overview/explorer.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Explorer -redirect_from: - - /v4/explorer - - /v4/explorer-new -versions: - fpt: '*' - ghec: '*' - ghes: '*' -layout: graphql-explorer -topics: - - API -autogenerated: graphql ---- - - - - -> [!WARNING] -> The GraphQL Explorer as an embedded tool will be removed from the documentation on November 1, 2025. See our [changelog announcement](https://github.blog/changelog/2025-08-22-graphql-explorer-removal-from-api-documentation-on-november-1-2025). - -For more information about how to explore {% data variables.product.prodname_dotcom %} GraphQL Schema, see [AUTOTITLE](/graphql/guides/using-graphql-clients). - - - -{% ifversion ghec %} - -> [!NOTE] -> If your {% data variables.product.prodname_ghe_cloud %} organization uses {% data variables.product.prodname_dotcom %}'s IP allow list, you won't be able to use the GraphQL Explorer. Instead, we recommend using an alternative GraphQL client IDE. - -{% endif %} - - - diff --git a/content/graphql/overview/index.md b/content/graphql/overview/index.md index 35a7b1e60855..3ada5560e4c6 100644 --- a/content/graphql/overview/index.md +++ b/content/graphql/overview/index.md @@ -1,6 +1,6 @@ --- title: Overview -intro: 'Learn about the {% data variables.product.prodname_dotcom %} GraphQL API, previews for upcoming changes, breaking changes, and limitations. You can also use the GraphQL Explorer to interact with the API on real {% data variables.product.prodname_dotcom %} data.' +intro: 'Learn about the {% data variables.product.prodname_dotcom %} GraphQL API, previews for upcoming changes, breaking changes, and limitations.' versions: fpt: '*' ghec: '*' @@ -10,7 +10,6 @@ children: - /public-schema - /breaking-changes - /changelog - - /explorer - /rate-limits-and-query-limits-for-the-graphql-api --- diff --git a/content/organizations/managing-saml-single-sign-on-for-your-organization/troubleshooting-identity-and-access-management-for-your-organization.md b/content/organizations/managing-saml-single-sign-on-for-your-organization/troubleshooting-identity-and-access-management-for-your-organization.md index fb3c2d88a72b..6e7265565b28 100644 --- a/content/organizations/managing-saml-single-sign-on-for-your-organization/troubleshooting-identity-and-access-management-for-your-organization.md +++ b/content/organizations/managing-saml-single-sign-on-for-your-organization/troubleshooting-identity-and-access-management-for-your-organization.md @@ -86,7 +86,6 @@ curl -X POST -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application For more information on using the GraphQL API, see: * [AUTOTITLE](/graphql/guides) -* [AUTOTITLE](/graphql/overview/explorer) ### Re-provisioning SCIM for users through your identity provider diff --git a/src/graphql/pages/explorer.module.scss b/src/graphql/pages/explorer.module.scss deleted file mode 100644 index ba567c838005..000000000000 --- a/src/graphql/pages/explorer.module.scss +++ /dev/null @@ -1,3 +0,0 @@ -.explorerIframe { - height: 45rem; -} diff --git a/src/graphql/pages/explorer.tsx b/src/graphql/pages/explorer.tsx deleted file mode 100644 index a85bd3d32097..000000000000 --- a/src/graphql/pages/explorer.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { GetServerSideProps } from 'next' - -import { MainContextT, MainContext, getMainContext } from '@/frame/components/context/MainContext' -import { AutomatedPage } from '@/automated-pipelines/components/AutomatedPage' -import { - AutomatedPageContext, - AutomatedPageContextT, - getAutomatedPageContextFromRequest, -} from '@/automated-pipelines/components/AutomatedPageContext' -import { useEffect, useRef } from 'react' - -import styles from './explorer.module.scss' - -type Props = { - mainContext: MainContextT - graphqlExplorerUrl: string - automatedPageContext: AutomatedPageContextT -} -export default function GQLExplorer({ - mainContext, - graphqlExplorerUrl, - automatedPageContext, -}: Props) { - const graphiqlRef = useRef(null) - - useEffect(() => { - if (typeof window !== 'undefined' && window.location.search) { - graphiqlRef.current?.contentWindow?.postMessage(window.location.search, graphqlExplorerUrl) - } - }, []) - - return ( - - - -
- -
-
-
-
- ) -} - -export const getServerSideProps: GetServerSideProps = async (context) => { - const req = context.req as any - const res = context.res as any - const graphqlExplorerUrl = - process.env.NODE_ENV === 'production' - ? 'https://graphql.github.com/explorer' - : 'http://localhost:3000' - const automatedPageContext = getAutomatedPageContextFromRequest(req) - - return { - props: { - mainContext: await getMainContext(req, res), - graphqlExplorerUrl, - automatedPageContext, - }, - } -} diff --git a/src/pages/[versionId]/graphql/overview/explorer.tsx b/src/pages/[versionId]/graphql/overview/explorer.tsx deleted file mode 100644 index a993f8af65f5..000000000000 --- a/src/pages/[versionId]/graphql/overview/explorer.tsx +++ /dev/null @@ -1 +0,0 @@ -export { default, getServerSideProps } from '@/graphql/pages/explorer' diff --git a/src/redirects/middleware/handle-redirects.ts b/src/redirects/middleware/handle-redirects.ts index 23d806c53a59..cffaefbd3a33 100644 --- a/src/redirects/middleware/handle-redirects.ts +++ b/src/redirects/middleware/handle-redirects.ts @@ -47,12 +47,9 @@ export default function handleRedirects(req: ExtendedRequest, res: Response, nex // The `q` param is deprecated, but we still need to support it in case // there are links out there that use it. const onSearch = req.path.endsWith('/search') || req.path.startsWith('/api/search') - // We have legacy links that links to the GraphQL Explorer with - // a `?query=...` in the URL. These should not redirect to the search page. - const onGraphqlExplorer = req.path.includes('/graphql/overview/explorer') const hasQ = 'q' in req.query const hasQuery = 'query' in req.query - if ((hasQ && !hasQuery) || (hasQuery && !onSearch && !onGraphqlExplorer)) { + if ((hasQ && !hasQuery) || (hasQuery && !onSearch)) { const language = getLanguage(req) const sp = new URLSearchParams(req.query as URLSearchParamsTypes) if (sp.has('q') && !sp.has('query')) { diff --git a/src/redirects/tests/redirects.ts b/src/redirects/tests/redirects.ts index a79a43376991..a34fce9776ed 100644 --- a/src/redirects/tests/redirects.ts +++ b/src/redirects/tests/redirects.ts @@ -82,11 +82,6 @@ describe('redirects', () => { const res = await get(reqPath) expect(res.statusCode).toBe(200) }) - - test('Do not redirect to search if on GraphQL Explorer "search"', async () => { - const res = await get('/en/graphql/overview/explorer?query=anything') - expect(res.statusCode).toBe(200) - }) }) describe('trailing slashes', () => { diff --git a/src/redirects/tests/routing/top-developer-site-path-redirects.ts b/src/redirects/tests/routing/top-developer-site-path-redirects.ts index 776de4a3f996..be96f4bd85e9 100644 --- a/src/redirects/tests/routing/top-developer-site-path-redirects.ts +++ b/src/redirects/tests/routing/top-developer-site-path-redirects.ts @@ -12,7 +12,6 @@ describe('developer.github.com redirects', () => { '/webhooks', '/v3/guides/managing-deploy-keys', '/apps/building-oauth-apps/authorizing-oauth-apps', - '/v4/explorer', '/v3/search', '/apps', '/v3/activity/events/types', diff --git a/src/search/scripts/scrape/lib/parse-page-sections-into-records.ts b/src/search/scripts/scrape/lib/parse-page-sections-into-records.ts index 847c8b817113..8c7a8ecfeda8 100644 --- a/src/search/scripts/scrape/lib/parse-page-sections-into-records.ts +++ b/src/search/scripts/scrape/lib/parse-page-sections-into-records.ts @@ -65,8 +65,7 @@ export default function parsePageSectionsIntoRecords(page: any): Record { let body = '' // Typical example pages with no `$root` are: - // https://docs.github.com/en/code-security/guides or - // https://docs.github.com/en/graphql/overview/explorer + // https://docs.github.com/en/code-security/guides // // We need to avoid these because if you use `getAllText()` on these // pages, it will extract *everything* from the page, which will