From 75703721effe5b9eae7b4160e2c7ab1727de144a Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Tue, 15 Nov 2022 22:46:38 +0100 Subject: [PATCH 1/2] [2022-11-14]: Device and session management settings page - [GA] (#32279) Co-authored-by: github-actions Co-authored-by: Anne-Marie <102995847+am-stead@users.noreply.github.com> Co-authored-by: Christina Li <93735018+cli1150@users.noreply.github.com> Co-authored-by: Melanie Yarbrough <11952755+myarb@users.noreply.github.com> --- .../github-mobile-active-sessions.png | Bin 0 -> 26887 bytes .../help/settings/revoke-mobile-session.png | Bin 0 -> 27677 bytes .../images/help/settings/revoke-session.png | Bin 0 -> 56174 bytes .../help/settings/saml-active-sessions.png | Bin 14714 -> 54424 bytes ...-and-managing-your-active-saml-sessions.md | 24 ++++++---- .../index.md | 1 + .../viewing-and-managing-your-sessions.md | 44 ++++++++++++++++++ .../device-and-settings-management-page.yml | 7 +++ data/reusables/user-settings/sessions.md | 1 + 9 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 assets/images/help/settings/github-mobile-active-sessions.png create mode 100644 assets/images/help/settings/revoke-mobile-session.png create mode 100644 assets/images/help/settings/revoke-session.png create mode 100644 content/authentication/keeping-your-account-and-data-secure/viewing-and-managing-your-sessions.md create mode 100644 data/features/device-and-settings-management-page.yml create mode 100644 data/reusables/user-settings/sessions.md diff --git a/assets/images/help/settings/github-mobile-active-sessions.png b/assets/images/help/settings/github-mobile-active-sessions.png new file mode 100644 index 0000000000000000000000000000000000000000..d1081695b873c17f5f308e0ebdaedd9224feac1b GIT binary patch literal 26887 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

OqOf1Yi<#POvxR0@$1!pCe_ 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 literal 0 HcmV?d00001 diff --git a/assets/images/help/settings/saml-active-sessions.png b/assets/images/help/settings/saml-active-sessions.png index 8ed58b9133b8d6d41b9334882bb1987a8e101643..86eadf42837bba80f23684dd6ec580c50786e066 100644 GIT binary patch literal 54424 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 vhk8+_MsGfxfr=3.8' + ghae: '>= 3.8' diff --git a/data/reusables/user-settings/sessions.md b/data/reusables/user-settings/sessions.md new file mode 100644 index 0000000000..743dcff89c --- /dev/null +++ b/data/reusables/user-settings/sessions.md @@ -0,0 +1 @@ +1. In the "Access" section of the sidebar, click **{% octicon "broadcast" aria-label="The broadcast icon" %} Sessions**. \ No newline at end of file From b2e5d14036a700b781e91158a552f8c0b1f04839 Mon Sep 17 00:00:00 2001 From: Robert Sese <734194+rsese@users.noreply.github.com> Date: Tue, 15 Nov 2022 16:12:16 -0600 Subject: [PATCH 2/2] Automate + Reactify webhooks page (#29534) Co-authored-by: Rachael Sewell Co-authored-by: Peter Bengtsson Co-authored-by: Joe Oak <41307427+joeoak@users.noreply.github.com> Co-authored-by: Sarah Edwards Co-authored-by: Grace Park Co-authored-by: Peter Bengtsson --- components/article/AutomatedPage.tsx | 23 +- components/context/AutomatedPageContext.tsx | 2 + .../ChildBodyParametersRows.tsx | 13 +- components/parameter-table/ParameterRow.tsx | 59 +- components/parameter-table/ParameterTable.tsx | 35 +- components/webhooks/Webhook.tsx | 195 ++ .../WebhookPayloadExample.module.scss | 16 + components/webhooks/types.ts | 34 + .../webhooks/webhook-events-and-payloads.md | 1568 +---------------- data/ui.yml | 20 + lib/webhooks/index.js | 84 + middleware/api/index.js | 2 + middleware/api/webhooks.js | 42 + middleware/contextualizers/webhooks.js | 1 + middleware/index.js | 2 + .../webhooks/webhook-events-and-payloads.tsx | 68 + tests/content/webhooks.js | 65 +- tests/rendering/webhooks.js | 56 +- 18 files changed, 696 insertions(+), 1589 deletions(-) create mode 100644 components/webhooks/Webhook.tsx create mode 100644 components/webhooks/WebhookPayloadExample.module.scss create mode 100644 components/webhooks/types.ts create mode 100644 middleware/api/webhooks.js create mode 100644 pages/[versionId]/developers/webhooks-and-events/webhooks/webhook-events-and-payloads.tsx diff --git a/components/article/AutomatedPage.tsx b/components/article/AutomatedPage.tsx index f05f2e983a..0bc51eb83f 100644 --- a/components/article/AutomatedPage.tsx +++ b/components/article/AutomatedPage.tsx @@ -6,13 +6,14 @@ import { ArticleGridLayout } from './ArticleGridLayout' import { MiniTocs } from 'components/ui/MiniTocs' import { useAutomatedPageContext } from 'components/context/AutomatedPageContext' import { ClientSideHighlight } from 'components/ClientSideHighlight' +import { Callout } from 'components/ui/Callout' type Props = { children: React.ReactNode } export const AutomatedPage = ({ children }: Props) => { - const { title, intro, renderedPage, miniTocItems } = useAutomatedPageContext() + const { title, intro, renderedPage, miniTocItems, product } = useAutomatedPageContext() return ( @@ -22,11 +23,21 @@ export const AutomatedPage = ({ children }: Props) => { {title}} intro={ - intro && ( - - {intro} - - ) + <> + {intro && ( + + {intro} + + )} + + {product && ( + + )} + } toc={miniTocItems.length > 1 && } > diff --git a/components/context/AutomatedPageContext.tsx b/components/context/AutomatedPageContext.tsx index 745dbd892f..2f41951da5 100644 --- a/components/context/AutomatedPageContext.tsx +++ b/components/context/AutomatedPageContext.tsx @@ -6,6 +6,7 @@ export type AutomatedPageContextT = { intro: string renderedPage: string | JSX.Element[] miniTocItems: Array + product?: string } export const AutomatedPageContext = createContext(null) @@ -30,5 +31,6 @@ export const getAutomatedPageContextFromRequest = (req: any): AutomatedPageConte intro: page.intro, renderedPage: req.context.renderedPage || '', miniTocItems: req.context.miniTocItems || [], + product: page.product || '', } } diff --git a/components/parameter-table/ChildBodyParametersRows.tsx b/components/parameter-table/ChildBodyParametersRows.tsx index 66bd672ae1..19362497df 100644 --- a/components/parameter-table/ChildBodyParametersRows.tsx +++ b/components/parameter-table/ChildBodyParametersRows.tsx @@ -7,6 +7,7 @@ import type { ChildParameter } from './types' import styles from './ChildBodyParametersRows.module.scss' type Props = { + open: boolean slug: string childParamsGroups: ChildParameter[] parentName: string @@ -14,6 +15,7 @@ type Props = { } export function ChildBodyParametersRows({ + open, slug, parentName, parentType, @@ -24,24 +26,27 @@ export function ChildBodyParametersRows({ return ( -

+
- +
- {childParamsGroups.map((childParam) => { + {childParamsGroups.map((childParam, index) => { return ( ) })} diff --git a/components/parameter-table/ParameterRow.tsx b/components/parameter-table/ParameterRow.tsx index f5d31e79e7..ed13fdfb6c 100644 --- a/components/parameter-table/ParameterRow.tsx +++ b/components/parameter-table/ParameterRow.tsx @@ -1,6 +1,7 @@ import cx from 'classnames' import { useTranslation } from 'components/hooks/useTranslation' +import { KeyboardEventHandler } from 'react' import { ChildBodyParametersRows } from './ChildBodyParametersRows' import type { ChildParameter } from './types' @@ -10,14 +11,38 @@ type Props = { numPreviews?: number isChild?: boolean rowIndex?: number + bodyParamExpandCallback?: KeyboardEventHandler | undefined + clickedBodyParameterName?: string | undefined } +// Webhooks have these same properties in common that we describe separately in its +// own section on the webhooks page: +// +// https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#webhook-payload-object-common-properties +// +// Since there's more details for these particular properties, we chose not +// show their child properties for each webhook and we also don't grab this +// information from the schema. +// +// We use this list of common properties to make sure we don't try and request +// the child properties for these specific properties. +const NO_CHILD_WEBHOOK_PROPERTIES = [ + 'action', + 'enterprise', + 'installation', + 'organization', + 'repository', + 'sender', +] + export function ParameterRow({ rowParams, slug, numPreviews = 0, - rowIndex = 0, isChild = false, + rowIndex = 0, + bodyParamExpandCallback = undefined, + clickedBodyParameterName = undefined, }: Props) { const { t } = useTranslation(['parameter_table', 'products']) @@ -97,8 +122,40 @@ export function ParameterRow({ parentName={rowParams.name} parentType={rowParams.type} childParamsGroups={rowParams.childParamsGroups} + open={rowParams.name === clickedBodyParameterName} /> )} + + {/* These conditions tell us: + + 1. the param is an object or array AND: + 2. the param has no child param groups AND: + 3. the param isn't one of the common webhook properties + + If all these are true, then that means we haven't yet loaded the + nested parameters so we show a stub
element that triggers + an API request to get the nested parameter data. + */} + {(rowParams.type === 'object' || rowParams.type.includes('array of')) && + rowParams.childParamsGroups && + rowParams.childParamsGroups.length === 0 && + !NO_CHILD_WEBHOOK_PROPERTIES.includes(rowParams.name) && ( +
+ + + )} ) } diff --git a/components/parameter-table/ParameterTable.tsx b/components/parameter-table/ParameterTable.tsx index a6c326f70f..bd9e0a9fc3 100644 --- a/components/parameter-table/ParameterTable.tsx +++ b/components/parameter-table/ParameterTable.tsx @@ -1,5 +1,6 @@ import cx from 'classnames' import { useTranslation } from 'components/hooks/useTranslation' +import { KeyboardEventHandler } from 'react' import { ParameterRow } from './ParameterRow' import { BodyParameter, ChildParameter, Parameter } from './types' @@ -8,20 +9,24 @@ import styles from './ParameterTable.module.scss' type Props = { slug: string - numPreviews: number - heading: string - headers: Array - parameters: Array + numPreviews?: number + heading?: string + headers?: Array + parameters?: Array bodyParameters: Array + bodyParamExpandCallback?: KeyboardEventHandler | undefined + clickedBodyParameterName?: string | undefined } export function ParameterTable({ slug, - numPreviews, + numPreviews = 0, heading = '', headers = [], - parameters, + parameters = [], bodyParameters, + bodyParamExpandCallback = undefined, + clickedBodyParameterName = '', }: Props) { const { t } = useTranslation(['parameter_table', 'products']) const queryParams = parameters.filter((param) => param.in === 'query') @@ -41,7 +46,11 @@ export function ParameterTable({ > - @@ -122,7 +131,9 @@ export function ParameterTable({ {bodyParameters.length > 0 && ( <> - @@ -131,7 +142,13 @@ export function ParameterTable({ {bodyParameters.map((param, index) => ( - + ))} )} diff --git a/components/webhooks/Webhook.tsx b/components/webhooks/Webhook.tsx new file mode 100644 index 0000000000..6c2be2be11 --- /dev/null +++ b/components/webhooks/Webhook.tsx @@ -0,0 +1,195 @@ +import { ActionList, ActionMenu, Flash } from '@primer/react' +import { useState, KeyboardEvent } from 'react' +import useSWR from 'swr' +import { slug } from 'github-slugger' +import cx from 'classnames' + +import { useMainContext } from 'components/context/MainContext' +import { useVersion } from 'components/hooks/useVersion' +import { LinkIconHeading } from 'components/article/LinkIconHeading' +import { useTranslation } from 'components/hooks/useTranslation' +import type { WebhookAction, WebhookData } from './types' +import { ParameterTable } from 'components/parameter-table/ParameterTable' + +import styles from './WebhookPayloadExample.module.scss' + +type Props = { + webhook: WebhookAction +} + +// fetcher passed to useSWR() to get webhook data using the given URL +async function webhookFetcher(url: string) { + const response = await fetch(url) + if (!response.ok) { + throw new Error(`${response.status} on ${url}`) + } + + return response.json() +} + +// We manually created decorated webhooks files for GHES versions older than +// 3.7, returns whether the given version is one of these versions of GHES. +// +// TODO: once 3.7 is the oldest supported version of GHES, we won't need this +// anymore. +function isScrapedGhesVersion(version: ReturnType) { + const scrapedVersions = ['3.6', '3.5', '3.4', '3.3', '3.2'] + + if (!version.isEnterprise) return false + + // getting the number part e.g. '3.6' from a version string like + // 'enterprise-server@3.6' + const versionNumber = version.currentVersion.split('@')[1] + + return scrapedVersions.includes(versionNumber) +} + +export function Webhook({ webhook }: Props) { + // Get version for requests to switch webhook action type + const version = useVersion() + const { t } = useTranslation('products') + + const context = useMainContext() + // Get more user friendly language for the different availability options in + // the webhook schema (we can't change it directly in the schema). Note that + // we specifically don't want to translate these strings with useTranslation() + // like we usually do with strings from data/ui.yml. + const rephraseAvailability = context.data.ui.products.webhooks.rephrase_availability + + // The param that was clicked so we can expand its property
element + const [clickedBodyParameterName, setClickedBodyParameterName] = useState('') + // The selected webhook action type the user selects via a dropdown + const [selectedWebhookActionType, setSelectedWebhookActionType] = useState('') + const webhookSlug = slug(webhook.data.category) + const webhookFetchUrl = `/api/webhooks/v1?${new URLSearchParams({ + category: webhook.data.category, + version: version.currentVersion, + })}` + + // callback for the action type dropdown -- besides setting the action type + // state, we also want to clear the clicked body param so that no properties + // are expanded when we re-render the webhook + function handleActionTypeChange(type: string) { + setClickedBodyParameterName('') + setSelectedWebhookActionType(type) + } + + // callback to trigger useSWR() hook after a nested property is clicked + function handleBodyParamExpansion(event: KeyboardEvent) { + // need to cast it because 'closest' isn't necessarily available on + // event.target + const target = event.target as HTMLElement + setClickedBodyParameterName(target.closest('details')?.dataset.nestedParamId) + } + + // fires when the webhook action type changes or someone clicks on a nested + // body param for the first time. In either case, we now have all the data + // for a webhook (i.e. all the data for each action type and all of their + // nested parameters) + const { data, error } = useSWR( + clickedBodyParameterName || selectedWebhookActionType ? webhookFetchUrl : null, + webhookFetcher, + { + revalidateOnFocus: false, + } + ) + + const currentWebhookActionType = selectedWebhookActionType || webhook.data.action + const currentWebhookAction = (data && data[currentWebhookActionType]) || webhook.data + + return ( +
+

+ + {currentWebhookAction.category} +

+
+
+ +

{t('webhooks.availability')}

+
    + {currentWebhookAction.availability.map((availability) => { + // TODO: once 3.7 is the oldest supported version of GHES, we won't need this anymore. + if (isScrapedGhesVersion(version)) { + return ( +
  • + ) + } else { + return ( +
  • + {rephraseAvailability[availability] ?? availability} +
  • + ) + } + })} +
+

{t('webhooks.webhook_payload_object')}

+ {error && ( + +

{t('webhooks.action_type_switch_error')}

+

+ + {error.toString()} + +

+
+ )} + {webhook.actionTypes.length > 1 && ( +
+

{t('webhooks.action_type')}

+
+ + + {currentWebhookActionType} + + + + {webhook.actionTypes.map((type) => { + return ( + handleActionTypeChange(type)} + > + {type} + + ) + })} + + + +
+
+ )} +
+
+ +
+
+ + {webhook.data.payloadExample && ( + <> +

{t('webhooks.webhook_payload_example')}

+
+ {JSON.stringify(webhook.data.payloadExample, null, 2)} +
+ + )} +
+ ) +} diff --git a/components/webhooks/WebhookPayloadExample.module.scss b/components/webhooks/WebhookPayloadExample.module.scss new file mode 100644 index 0000000000..05121c8aa5 --- /dev/null +++ b/components/webhooks/WebhookPayloadExample.module.scss @@ -0,0 +1,16 @@ +@import "@primer/css/support/index.scss"; + +.payloadExample { + overflow: auto; + margin-bottom: 1rem; + line-height: 1.45; + background-color: var(--color-canvas-subtle); + font-size: 90%; + max-height: 32rem; + + code { + background-color: transparent; + padding: 8px 8px 16px; + white-space: pre; + } +} diff --git a/components/webhooks/types.ts b/components/webhooks/types.ts new file mode 100644 index 0000000000..f898dd0232 --- /dev/null +++ b/components/webhooks/types.ts @@ -0,0 +1,34 @@ +import { Parameter, StatusCode, CodeSample, BodyParameter } from '../rest/types' + +export interface WebhookT { + actions: string[] + webhookActions: WebhookAction[] +} + +interface WebhookActionData { + verb: string + title: string + descriptionHtml: string + summaryHtml: string + previews: Array + requestPath: string + serverUrl: string + statusCodes: Array + parameters: Array + bodyParameters: Array + category: string + subcategory: string + codeExamples: Array + availability: Array + action: string + payloadExample?: Object +} +export interface WebhookAction { + name: string + actionTypes: string[] + data: WebhookActionData +} + +export type WebhookData = { + [key: string]: WebhookActionData +} diff --git a/content/developers/webhooks-and-events/webhooks/webhook-events-and-payloads.md b/content/developers/webhooks-and-events/webhooks/webhook-events-and-payloads.md index 7f68a7bb88..fdfc96b388 100644 --- a/content/developers/webhooks-and-events/webhooks/webhook-events-and-payloads.md +++ b/content/developers/webhooks-and-events/webhooks/webhook-events-and-payloads.md @@ -1,6 +1,6 @@ --- title: Webhook events and payloads -intro: 'For each webhook event, you can review when the event occurs, an example payload, and descriptions about the payload object parameters.' +intro: 'Learn about when each webhook event occurs and what the payload contains.' product: '{% data reusables.gated-features.enterprise_account_webhooks %}' redirect_from: - /early-access/integrations/webhooks @@ -97,1568 +97,4 @@ Also, the `User-Agent` for the requests will have the prefix `GitHub-Hookshot/`. > } ``` -{% ifversion fpt or ghes > 3.3 or ghae or ghec %} -## branch_protection_rule - -Activity related to a branch protection rule. For more information, see "[About branch protection rules](/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-rules)." - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Administration** repository permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action performed. Can be `created`, `edited`, or `deleted`. -`rule` | `object` | The branch protection rule. Includes a `name` and all the [branch protection settings](/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-settings) applied to branches that match the name. Binary settings are boolean. Multi-level configurations are one of `off`, `non_admins`, or `everyone`. Actor and build lists are arrays of strings. -`changes` | `object` | If the action was `edited`, the changes to the rule. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.branch_protection_rule.edited }} -{% endif %} - -{% ifversion ghes > 3.3 %} -## cache_sync - -A Git ref has been successfully synced to a cache replica. For more information, see "[About repository caching](/admin/enterprise-management/caching-repositories/about-repository-caching)." - -### Availability - -- Repository webhooks -- Organization webhooks - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`cache_location` |`string` | The location of the cache server that has been updated. -`ref` | `string` | The ref that has been updated. -`before` | `string` | The OID of the ref on the cache replica before it was updated. -`after` | `string` | The OID of the ref on the cache replica after the update. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.cache_sync.synced }} -{% endif %} - -## check_run - -{% data reusables.webhooks.check_run_short_desc %} - -{% data reusables.apps.undetected-pushes-to-a-forked-repository-for-check-suites %} - -### Availability - -- Repository webhooks only receive payloads for the `created` and `completed` event types in a repository -- Organization webhooks only receive payloads for the `created` and `completed` event types in repositories -- {% data variables.product.prodname_github_apps %} with **Checks** read permission receive payloads for the `created` and `completed` events that occur in the repository where the app is installed. The app must have **Checks** write permission to receive the `rerequested` and `requested_action` event types. The `rerequested` and `requested_action` event type payloads are only sent to the {% data variables.product.prodname_github_app %} being requested. {% data variables.product.prodname_github_apps %} with **Checks** write permission are automatically subscribed to this webhook event. - -### Webhook payload object - -{% data reusables.webhooks.check_run_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.check_run.created }} - -## check_suite - -{% data reusables.webhooks.check_suite_short_desc %} - -{% data reusables.apps.undetected-pushes-to-a-forked-repository-for-check-suites %} - -### Availability - -- Repository webhooks only receive payloads for the `completed` event types in a repository -- Organization webhooks only receive payloads for the `completed` event types in repositories -- {% data variables.product.prodname_github_apps %} with **Checks** read permission receive payloads for the `created` and `completed` events that occur in the repository where the app is installed. The app must have **Checks** write permission to receive the `requested` and `rerequested` event types. The `requested` and `rerequested` event type payloads are only sent to the {% data variables.product.prodname_github_app %} being requested. {% data variables.product.prodname_github_apps %} with **Checks** write permission are automatically subscribed to this webhook event. - -### Webhook payload object - -{% data reusables.webhooks.check_suite_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.check_suite.completed }} - -## code_scanning_alert - -{% data reusables.webhooks.code_scanning_alert_event_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Code scanning alerts** permission - -### Webhook payload object - -{% data reusables.webhooks.code_scanning_alert_event_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -`sender` | `object` | If the `action` is `reopened_by_user` or `closed_by_user`, the `sender` object will be the user that triggered the event. The `sender` object is {% ifversion fpt or ghec %}`github`{% elsif ghes or ghae %}`github-enterprise`{% else %}empty{% endif %} for all other actions. - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.code_scanning_alert.reopened }} - -## commit_comment - -{% data reusables.webhooks.commit_comment_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Contents** permission - -### Webhook payload object - -{% data reusables.webhooks.commit_comment_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.commit_comment.created }} - -{% ifversion ghes < 3.4 %} -## content_reference - -{% data reusables.webhooks.content_reference_short_desc %} - -Webhook events are triggered based on the specificity of the domain you register. For example, if you register a subdomain (`https://subdomain.example.com`) then only URLs for the subdomain trigger this event. If you register a domain (`https://example.com`) then URLs for domain and all subdomains trigger this event. See "[Create a content attachment](/rest/reference/apps#create-a-content-attachment)" to create a new content attachment. - -### Availability - -- {% data variables.product.prodname_github_apps %} with the `content_references:write` permission - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.content_reference.created }} - -{% endif %} -## create - -{% data reusables.webhooks.create_short_desc %} - -{% note %} - -**Note:** You will not receive a webhook for this event when you create more than three tags at once. - -{% endnote %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Contents** permission - -### Webhook payload object - -{% data reusables.webhooks.create_properties %} -{% data reusables.webhooks.pusher_type_desc %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.create }} - -## delete - -{% data reusables.webhooks.delete_short_desc %} - -{% note %} - -**Note:** You will not receive a webhook for this event when you delete more than three tags at once. - -{% endnote %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Contents** permission - -### Webhook payload object - -{% data reusables.webhooks.delete_properties %} -{% data reusables.webhooks.pusher_type_desc %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.delete }} - -{% ifversion fpt or ghec %} -## dependabot_alert - -{% data reusables.webhooks.dependabot_alert_description %} - -### Availability - -{% data reusables.webhooks.dependabot_alert_availability %} - -### Webhook payload object - -{% data reusables.webhooks.dependabot_alert_payload %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.dependabot_alert.fixed }} -{% endif %} - -## deploy_key - -{% data reusables.webhooks.deploy_key_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks - -### Webhook payload object - -{% data reusables.webhooks.deploy_key_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.deploy_key.created }} - -## deployment - -{% data reusables.webhooks.deployment_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Deployments** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action performed. Can be `created`. -`deployment` |`object` | The [deployment](/rest/reference/deployments#list-deployments). -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.deployment }} - -## deployment_status - -{% data reusables.webhooks.deployment_status_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Deployments** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action performed. Can be `created`. -`deployment_status` |`object` | The [deployment status](/rest/reference/deployments#list-deployment-statuses). -`deployment_status["state"]` |`string` | The new state. Can be `pending`, `success`, `failure`, or `error`. -`deployment_status["target_url"]` |`string` | The optional link added to the status. -`deployment_status["description"]`|`string` | The optional human-readable description added to the status. -`deployment` |`object` | The [deployment](/rest/reference/deployments#list-deployments) that this status is associated with. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.deployment_status }} - -{% ifversion fpt or ghec %} -## discussion - -{% data reusables.webhooks.discussions-webhooks-beta %} - -Activity related to a discussion. For more information, see the "[Using the GraphQL API for discussions](/graphql/guides/using-the-graphql-api-for-discussions)." -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Discussions** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action performed. Can be `created`, `edited`, `deleted`, `pinned`, `unpinned`, `locked`, `unlocked`, `transferred`, `category_changed`, `answered`, `unanswered`, `labeled`, or `unlabeled`. -{% data reusables.webhooks.discussion_desc %} -{% data reusables.webhooks.repo_desc_graphql %} -{% data reusables.webhooks.org_desc_graphql %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.discussion.created }} - -## discussion_comment - -{% data reusables.webhooks.discussions-webhooks-beta %} - -Activity related to a comment in a discussion. For more information, see "[Using the GraphQL API for discussions](/graphql/guides/using-the-graphql-api-for-discussions)." - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Discussions** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action performed. Can be `created`, `edited`, or `deleted`. -`comment` | `object` | The [`discussion comment`](/graphql/guides/using-the-graphql-api-for-discussions#discussioncomment) resource. -{% data reusables.webhooks.discussion_desc %} -{% data reusables.webhooks.repo_desc_graphql %} -{% data reusables.webhooks.org_desc_graphql %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.discussion_comment.created }} -{% endif %} - -{% ifversion ghes or ghae %} - -## enterprise - -{% data reusables.webhooks.enterprise_short_desc %} - -### Availability - -- GitHub Enterprise webhooks. For more information, "[Global webhooks](/rest/reference/enterprise-admin#global-webhooks/)." - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action performed. Can be `anonymous_access_enabled` or `anonymous_access_disabled`. - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.enterprise.anonymous_access_enabled }} - -{% endif %} - -## fork - -{% data reusables.webhooks.fork_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Contents** permission - -### Webhook payload object - -{% data reusables.webhooks.fork_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.fork }} - -## github_app_authorization - -When someone revokes their authorization of a {% data variables.product.prodname_github_app %}, this event occurs. A {% data variables.product.prodname_github_app %} receives this webhook by default and cannot unsubscribe from this event. - -{% data reusables.webhooks.authorization_event %} For details about user-to-server requests, which require {% data variables.product.prodname_github_app %} authorization, see "[Identifying and authorizing users for {% data variables.product.prodname_github_apps %}](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)." - -### Availability - -- {% data variables.product.prodname_github_apps %} - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action performed. Can be `revoked`. -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.github_app_authorization.revoked }} - -## gollum - -{% data reusables.webhooks.gollum_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Contents** permission - -### Webhook payload object - -{% data reusables.webhooks.gollum_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.gollum }} - -## installation - -{% data reusables.webhooks.installation_short_desc %} - -### Availability - -- {% data variables.product.prodname_github_apps %} - -### Webhook payload object - -{% data reusables.webhooks.installation_properties %} -{% data reusables.webhooks.app_always_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.installation.deleted }} - -## installation_repositories - -{% data reusables.webhooks.installation_repositories_short_desc %} - -### Availability - -- {% data variables.product.prodname_github_apps %} - -### Webhook payload object - -{% data reusables.webhooks.installation_repositories_properties %} -{% data reusables.webhooks.app_always_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.installation_repositories.added }} - -## issue_comment - -{% data reusables.webhooks.issue_comment_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Issues** permission - -### Webhook payload object - -{% data reusables.webhooks.issue_comment_webhook_properties %} -{% data reusables.webhooks.issue_comment_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.issue_comment.created }} - -## issues - -{% data reusables.webhooks.issues_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Issues** permission - -### Webhook payload object - -{% data reusables.webhooks.issue_webhook_properties %} -{% data reusables.webhooks.issue_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example when someone edits an issue - -{{ webhookPayloadsForCurrentVersion.issues.edited }} - -## label - -{% data reusables.webhooks.label_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Metadata** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action`|`string` | The action that was performed. Can be `created`, `edited`, or `deleted`. -`label`|`object` | The label that was added. -`changes`|`object`| The changes to the label if the action was `edited`. -`changes[name][from]`|`string` | The previous version of the name if the action was `edited`. -`changes[color][from]`|`string` | The previous version of the color if the action was `edited`. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.label.deleted }} - -{% ifversion fpt or ghec %} -## marketplace_purchase - -Activity related to a GitHub Marketplace purchase. {% data reusables.webhooks.action_type_desc %} For more information, see the "[GitHub Marketplace](/marketplace/)." - -### Availability - -- {% data variables.product.prodname_github_apps %} - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` | `string` | The action performed for a [GitHub Marketplace](https://github.com/marketplace) plan. Can be one of:
  • `purchased` - Someone purchased a GitHub Marketplace plan. The change should take effect on the account immediately.
  • `pending_change` - You will receive the `pending_change` event when someone has downgraded or cancelled a GitHub Marketplace plan to indicate a change will occur on the account. The new plan or cancellation takes effect at the end of the billing cycle. The `cancelled` or `changed` event type will be sent when the billing cycle has ended and the cancellation or new plan should take effect.
  • `pending_change_cancelled` - Someone has cancelled a pending change. Pending changes include plan cancellations and downgrades that will take effect at the end of a billing cycle.
  • `changed` - Someone has upgraded or downgraded a GitHub Marketplace plan and the change should take effect on the account immediately.
  • `cancelled` - Someone cancelled a GitHub Marketplace plan and the last billing cycle has ended. The change should take effect on the account immediately.
- -For a detailed description of this payload and the payload for each type of `action`, see [{% data variables.product.prodname_marketplace %} webhook events](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/). - -### Webhook payload example when someone purchases the plan - -{{ webhookPayloadsForCurrentVersion.marketplace_purchase.purchased }} - -{% endif %} - -## member - -{% data reusables.webhooks.member_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Members** permission - -### Webhook payload object - -{% data reusables.webhooks.member_webhook_properties %} -{% data reusables.webhooks.member_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.member.added }} - -## membership - -{% data reusables.webhooks.membership_short_desc %} - -### Availability - -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Members** permission - -### Webhook payload object - -{% data reusables.webhooks.membership_properties %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.membership.removed }} - -{% ifversion fpt or ghec %} - -## merge_group - -{% data reusables.pull_requests.merge-queue-beta %} - -Activity related to merge groups in a merge queue. The type of activity is specified in the action property of the payload object. - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Merge queues** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action`|`string` | The action that was performed. Currently, can only be `checks_requested`. -`merge_group`|`object` | The merge group. -`merge_group[head_sha]`|`string` | The SHA of the merge group. -`merge_group[head_ref]`|`string` | The full ref of the merge group. -`merge_group[base_sha]`|`string` | The SHA of the merge group's parent commit. -`merge_group[base_ref]`|`string` | The full ref of the branch the merge group will be merged into. -`merge_group[head_commit]`|`object` | An expanded representation of the `head_sha` commit. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.merge_group.checks_requested }} - -{% endif %} - -## meta - -The webhook this event is configured on was deleted. This event will only listen for changes to the particular hook the event is installed on. Therefore, it must be selected for each hook that you'd like to receive meta events for. - -### Availability - -- Repository webhooks -- Organization webhooks - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action performed. Can be `deleted`. -`hook_id` |`integer` | The id of the modified webhook. -`hook` |`object` | The modified webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.meta.deleted }} - -## milestone - -{% data reusables.webhooks.milestone_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Pull requests** permission - -### Webhook payload object - -{% data reusables.webhooks.milestone_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.milestone.created }} - -## organization - -{% data reusables.webhooks.organization_short_desc %} - -### Availability - -{% ifversion ghes or ghae %} -- GitHub Enterprise webhooks only receive `created` and `deleted` events. For more information, "[Global webhooks](/rest/reference/enterprise-admin#global-webhooks/).{% endif %} -- Organization webhooks only receive the `deleted`, `added`, `removed`, `renamed`, and `invited` events -- {% data variables.product.prodname_github_apps %} with **Members** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action that was performed. Can be one of:{% ifversion ghes or ghae %} `created`,{% endif %} `deleted`, `renamed`, `member_added`, `member_removed`, or `member_invited`. -`invitation` |`object` | The invitation for the user or email if the action is `member_invited`. -`membership` |`object` | The membership between the user and the organization. Not present when the action is `member_invited`. -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.organization.member_added }} - -{% ifversion fpt or ghec %} - -## org_block - -{% data reusables.webhooks.org_block_short_desc %} - -### Availability - -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Administration** organization permission - -### Webhook payload object - -Key | Type | Description -----|------|------------ -`action` | `string` | The action performed. Can be `blocked` or `unblocked`. -`blocked_user` | `object` | Information about the user that was blocked or unblocked. -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.org_block.blocked }} - -{% endif %} - -## package - -Activity related to {% data variables.product.prodname_registry %}. {% data reusables.webhooks.action_type_desc %} For more information, see "[Managing packages with {% data variables.product.prodname_registry %}](/github/managing-packages-with-github-packages)" to learn more about {% data variables.product.prodname_registry %}. - -### Availability - -- Repository webhooks -- Organization webhooks - -### Webhook payload object - -{% data reusables.webhooks.package_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.package.published }} - -## page_build - -{% data reusables.webhooks.page_build_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Pages** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------ -`id` | `integer` | The unique identifier of the page build. -`build` | `object` | The [List GitHub Pages builds](/rest/reference/pages#list-github-pages-builds) itself. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.page_build }} - -## ping - -{% data reusables.webhooks.ping_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} receive a ping event with an `app_id` used to register the app - -### Webhook payload object - -Key | Type | Description -----|------|------------ -`zen` | `string` | Random string of GitHub zen. -`hook_id` | `integer` | The ID of the webhook that triggered the ping. -`hook` | `object` | The [webhook configuration](/rest/reference/webhooks#get-a-repository-webhook). -`hook[app_id]` | `integer` | When you register a new {% data variables.product.prodname_github_app %}, {% data variables.product.product_name %} sends a ping event to the **webhook URL** you specified during registration. The event contains the `app_id`, which is required for [authenticating](/apps/building-integrations/setting-up-and-registering-github-apps/about-authentication-options-for-github-apps/) an app. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.ping }} - -## project - -{% data reusables.webhooks.project_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Projects** repository or organization permission - -{% ifversion projects-v2 %} -{% note %} - -**Note**: This event only occurs for {% data variables.product.prodname_projects_v1 %}. - -{% endnote %} -{% endif %} - -### Webhook payload object - -{% data reusables.webhooks.project_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.project.created }} - -## project_card - -{% data reusables.webhooks.project_card_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Projects** repository or organization permission - -{% ifversion projects-v2 %} -{% note %} - -**Note**: This event only occurs for {% data variables.product.prodname_projects_v1 %}. - -{% endnote %} -{% endif %} - -### Webhook payload object - -{% data reusables.webhooks.project_card_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.project_card.created }} - -## project_column - -{% data reusables.webhooks.project_column_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Projects** repository or organization permission - -{% ifversion projects-v2 %} -{% note %} - -**Note**: This event only occurs for {% data variables.product.prodname_projects_v1 %}. - -{% endnote %} -{% endif %} - -### Webhook payload object - -{% data reusables.webhooks.project_column_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.project_column.created }} - -{% ifversion project-beta-webhooks %} - -## projects_v2_item - -{% note %} - -**Note:** Webhook events for {% data variables.projects.projects_v2 %} are currently in beta and subject to change. To share feedback about {% data variables.projects.projects_v2 %} webhooks with {% data variables.product.product_name %}, see the [Projects webhook feedback discussion](https://github.com/orgs/community/discussions/17405). - -{% endnote %} - -Activity related to items in a {% data variables.projects.project_v2 %}. {% data reusables.webhooks.action_type_desc %} For more information, see "[About {% data variables.projects.projects_v2 %}](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects)." - -### Availability - -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Projects** organization permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action`|`string` | The action that was performed on the project item. Can be one of `archived`, `converted`, `created`, `edited`, `restored`, `deleted`, or `reordered`. -`projects_v2_item`|`object` | The project item itself. To find more information about the project item, you can use `node_id` (the node ID of the project item) and `project_node_id` (the node ID of the project) to query information in the GraphQL API. For more information, see "[Using the API to manage projects](/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects)." -`changes`|`object` | The changes to the project item. -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.projects_v2_item.created }} - -{% endif %} - -## public - -{% data reusables.webhooks.public_short_desc %} -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Metadata** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.public }} - -## pull_request - -{% data reusables.webhooks.pull_request_short_desc %} - -{% ifversion fpt or ghec %} - {% data reusables.pull_requests.merge-queue-beta %} -{% endif %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Pull requests** permission - -### Webhook payload object - -{% data reusables.webhooks.pull_request_webhook_properties %} -{% data reusables.webhooks.pull_request_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -Deliveries for `review_requested` and `review_request_removed` events will have an additional field called `requested_reviewer`. - -{{ webhookPayloadsForCurrentVersion.pull_request.opened }} - -## pull_request_review - -{% data reusables.webhooks.pull_request_review_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Pull requests** permission - -### Webhook payload object - -{% data reusables.webhooks.pull_request_review_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.pull_request_review.submitted }} - -## pull_request_review_comment - -{% data reusables.webhooks.pull_request_review_comment_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Pull requests** permission - -### Webhook payload object - -{% data reusables.webhooks.pull_request_review_comment_webhook_properties %} -{% data reusables.webhooks.pull_request_review_comment_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.pull_request_review_comment.created }} - -## pull_request_review_thread - -{% data reusables.webhooks.pull_request_review_thread_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Pull requests** permission - -### Webhook payload object - -{% data reusables.webhooks.pull_request_thread_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.pull_request_review_thread.resolved }} - -## push - -{% data reusables.webhooks.push_short_desc %} - -{% note %} - -**Note:** You will not receive a webhook for this event when you push more than three tags at once. - -{% endnote %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Contents** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`ref`|`string` | The full [`git ref`](/rest/reference/git#refs) that was pushed. Example: `refs/heads/main` or `refs/tags/v3.14.1`. -`before`|`string` | The SHA of the most recent commit on `ref` before the push. -`after`|`string` | The SHA of the most recent commit on `ref` after the push. -`created`|`boolean` | Whether this push created the `ref`. -`deleted`|`boolean` | Whether this push deleted the `ref`. -`forced`|`boolean` | Whether this push was a force push of the `ref`. -`head_commit`|`object` | For pushes where `after` is or points to a commit object, an expanded representation of that commit. For pushes where `after` refers to an annotated tag object, an expanded representation of the commit pointed to by the annotated tag. -`compare`|`string` | URL that shows the changes in this `ref` update, from the `before` commit to the `after` commit. For a newly created `ref` that is directly based on the default branch, this is the comparison between the head of the default branch and the `after` commit. Otherwise, this shows all commits until the `after` commit. -`commits`|`array` | An array of commit objects describing the pushed commits. (Pushed commits are all commits that are included in the `compare` between the `before` commit and the `after` commit.) -`commits[][id]`|`string` | The SHA of the commit. -`commits[][timestamp]`|`string` | The ISO 8601 timestamp of the commit. -`commits[][message]`|`string` | The commit message. -`commits[][author]`|`object` | The git author of the commit. -`commits[][author][name]`|`string` | The git author's name. -`commits[][author][email]`|`string` | The git author's email address. -`commits[][url]`|`url` | URL that points to the commit API resource. -`commits[][distinct]`|`boolean` | Whether this commit is distinct from any that have been pushed before. -`commits[][added]`|`array` | An array of files added in the commit. For extremely large commits where {% data variables.product.product_name %} is unable to calculate this list in a timely manner, this may be empty even if files were added. -`commits[][modified]`|`array` | An array of files modified by the commit. For extremely large commits where {% data variables.product.product_name %} is unable to calculate this list in a timely manner, this may be empty even if files were modified. -`commits[][removed]`|`array` | An array of files removed in the commit. For extremely large commits where {% data variables.product.product_name %} is unable to calculate this list in a timely manner, this may be empty even if files were removed. -`pusher` | `object` | The user who pushed the commits. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.push }} - -## release - -{% data reusables.webhooks.release_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Contents** permission - -### Webhook payload object - -{% data reusables.webhooks.release_webhook_properties %} -{% data reusables.webhooks.release_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.release.published }} - -## repository_dispatch - -This event occurs when a {% data variables.product.prodname_github_app %} sends a `POST` request to the "[Create a repository dispatch event](/rest/reference/repos#create-a-repository-dispatch-event)" endpoint. - -### Availability - -- {% data variables.product.prodname_github_apps %} with **Contents** permission - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.repository_dispatch }} - -## repository - -{% data reusables.webhooks.repository_short_desc %} - -### Availability - -- Repository webhooks receive all event types except `deleted` -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Metadata** permission receive all event types except `deleted` - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action that was performed. This can be one of:
  • `created` - A repository is created.
  • `deleted` - A repository is deleted.
  • `archived` - A repository is archived.
  • `unarchived` - A repository is unarchived.
  • {% ifversion ghes or ghae %}
  • `anonymous_access_enabled` - A repository is [enabled for anonymous Git access](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise), `anonymous_access_disabled` - A repository is [disabled for anonymous Git access](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise)
  • {% endif %}
  • `edited` - A repository's information is edited.
  • `renamed` - A repository is renamed.
  • `transferred` - A repository is transferred.
  • `publicized` - A repository is made public.
  • `privatized` - A repository is made private.
-{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.repository.publicized }} - -{% ifversion fpt or ghec %} -## repository_import - -{% data reusables.webhooks.repository_import_short_desc %} To receive this event for a personal repository, you must create an empty repository prior to the import. This event can be triggered using either the [GitHub Importer](/articles/importing-a-repository-with-github-importer/) or the [Source imports API](/rest/reference/migrations#source-imports). - -### Availability - -- Repository webhooks -- Organization webhooks - -### Webhook payload object - -{% data reusables.webhooks.repository_import_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.repository_import }} - -## repository_vulnerability_alert - -{% data reusables.webhooks.repository_vulnerability_alert_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks - -### Webhook payload object - -{% data reusables.webhooks.repository_vulnerability_alert_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.repository_vulnerability_alert.create }} - -{% endif %} - -{% ifversion ghes or ghec %} - -## secret_scanning_alert - -{% data reusables.webhooks.secret_scanning_alert_event_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Secret scanning alerts** permission - -### Webhook payload object - -{% data reusables.webhooks.secret_scanning_alert_event_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -`sender` | `object` | If the `action` is `resolved` or `reopened`, the `sender` object will be the user that triggered the event. The `sender` object is empty for all other actions. - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.secret_scanning_alert.reopened }} -{% endif %} - -{% ifversion ghes > 3.4 or ghec or ghae > 3.4 %} -## secret_scanning_alert_location - -{% data reusables.webhooks.secret_scanning_alert_location_event_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Secret scanning alerts** permission - -### Webhook payload object - -{% data reusables.webhooks.secret_scanning_alert_location_event_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.secret_scanning_alert_location.created }} -{% endif %} - -{% ifversion fpt or ghes or ghec %} -## security_advisory - -Activity related to a security advisory that has been reviewed by {% data variables.product.company_short %}. A {% data variables.product.company_short %}-reviewed security advisory provides information about security-related vulnerabilities in software on {% data variables.product.prodname_dotcom %}. - -The security advisory dataset also powers the GitHub {% data variables.product.prodname_dependabot_alerts %}. For more information, see "[About {% data variables.product.prodname_dependabot_alerts %}](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies/)." - -### Availability - -- {% data variables.product.prodname_github_apps %} - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action that was performed. The action can be one of `published`, `updated`, `performed`, or `withdrawn` for all new events. -`security_advisory` |`object` | The details of the security advisory, including summary, description, and severity. - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.security_advisory.published }} - -{% endif %} - -{% ifversion ghas-enablement-webhook %} - -## security_and_analysis - -Activity related to enabling or disabling code security and analysis features for a repository or organization. - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Administration** repository permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`changes`|`object` | The changes that were made to the code security and analysis features. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.security_and_analysis }} - -{% endif %} - -{% ifversion fpt or ghec %} -## sponsorship - -{% data reusables.webhooks.sponsorship_short_desc %} - -You can only create a sponsorship webhook on {% data variables.product.prodname_dotcom %}. For more information, see "[Configuring webhooks for events in your sponsored account](/sponsors/integrating-with-github-sponsors/configuring-webhooks-for-events-in-your-sponsored-account)". - -### Availability - -- Sponsored accounts - -### Webhook payload object - -{% data reusables.webhooks.sponsorship_webhook_properties %} -{% data reusables.webhooks.sponsorship_properties %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example when someone creates a sponsorship - -{{ webhookPayloadsForCurrentVersion.sponsorship.created }} - -### Webhook payload example when someone downgrades a sponsorship - -{{ webhookPayloadsForCurrentVersion.sponsorship.downgraded }} - -{% endif %} - -## star - -{% data reusables.webhooks.star_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks - -### Webhook payload object - -{% data reusables.webhooks.star_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.star.created }} - -## status - -{% data reusables.webhooks.status_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Commit statuses** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`id` | `integer` | The unique identifier of the status. -`sha`|`string` | The Commit SHA. -`state`|`string` | The new state. Can be `pending`, `success`, `failure`, or `error`. -`description`|`string` | The optional human-readable description added to the status. -`target_url`|`string` | The optional link added to the status. -`branches`|`array` | An array of branch objects containing the status' SHA. Each branch contains the given SHA, but the SHA may or may not be the head of the branch. The array includes a maximum of 10 branches. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.status }} - -## team - -{% data reusables.webhooks.team_short_desc %} - -### Availability - -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Members** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`action` |`string` | The action that was performed. Can be one of `created`, `deleted`, `edited`, `added_to_repository`, or `removed_from_repository`. -`team` |`object` | The team itself. -`changes`|`object` | The changes to the team if the action was `edited`. -`changes[description][from]` |`string` | The previous version of the description if the action was `edited`. -`changes[name][from]` |`string` | The previous version of the name if the action was `edited`. -`changes[privacy][from]` |`string` | The previous version of the team's privacy if the action was `edited`. -`changes[repository][permissions][from][admin]` | `boolean` | The previous version of the team member's `admin` permission on a repository, if the action was `edited`. -`changes[repository][permissions][from][pull]` | `boolean` | The previous version of the team member's `pull` permission on a repository, if the action was `edited`. -`changes[repository][permissions][from][push]` | `boolean` | The previous version of the team member's `push` permission on a repository, if the action was `edited`. -`repository`|`object` | The repository that was added or removed from to the team's purview if the action was `added_to_repository`, `removed_from_repository`, or `edited`. For `edited` actions, `repository` also contains the team's new permission levels for the repository. -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.team.added_to_repository }} - -## team_add - -{% data reusables.webhooks.team_add_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Members** permission - -### Webhook payload object - -Key | Type | Description -----|------|------------- -`team`|`object` | The [team](/rest/reference/teams) that was modified. **Note:** Older events may not include this in the payload. -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.team_add }} - -{% ifversion ghes or ghae %} - -## user - -When a user is `created` or `deleted`. - -### Availability -- GitHub Enterprise webhooks. For more information, "[Global webhooks](/rest/reference/enterprise-admin#global-webhooks/)." - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.user.created }} - -{% endif %} - -## watch - -{% data reusables.webhooks.watch_short_desc %} - -The event’s actor is the [user](/rest/reference/users) who starred a repository, and the event’s repository is the [repository](/rest/reference/repos) that was starred. - -### Availability - -- Repository webhooks -- Organization webhooks -- {% data variables.product.prodname_github_apps %} with **Metadata** permission - -### Webhook payload object - -{% data reusables.webhooks.watch_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.app_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.watch.started }} - -{% ifversion fpt or ghes or ghec %} -## workflow_dispatch - -This event occurs when someone triggers a workflow run on GitHub or sends a `POST` request to the "[Create a workflow dispatch event](/rest/reference/actions/#create-a-workflow-dispatch-event)" endpoint. For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_dispatch)." - -### Availability - -- {% data variables.product.prodname_github_apps %} with **Contents** permission - -### Webhook payload object - -| Key | Type | Description | -|-----|-----|-----| -| `inputs` | `object` | Inputs to the workflow. Each key represents the name of the input while its value represents the value of that input. | -{% data reusables.webhooks.org_desc %} -| `ref` | `string` | The branch or tag from which the workflow was run. | -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.sender_desc %} -| `workflow` | `string` | Relative path to the workflow file which contains the workflow. | - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.workflow_dispatch }} -{% endif %} - -## workflow_job - -{% data reusables.webhooks.workflow_job_short_desc %} - -### Availability - -- Repository webhooks -- Organization webhooks -- Enterprise webhooks - -### Webhook payload object - -{% data reusables.webhooks.workflow_job_properties %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.workflow_job }} - -{% ifversion fpt or ghes or ghec %} -## workflow_run - -When a {% data variables.product.prodname_actions %} workflow run is requested or completed. For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#workflow_run)." - -### Availability - -- {% data variables.product.prodname_github_apps %} with **Actions** or **Contents** permissions - -### Webhook payload object - -{% data reusables.webhooks.workflow_run_properties %} -{% data reusables.webhooks.workflow_desc %} -{% data reusables.webhooks.org_desc %} -{% data reusables.webhooks.repo_desc %} -{% data reusables.webhooks.sender_desc %} - -### Webhook payload example - -{{ webhookPayloadsForCurrentVersion.workflow_run }} -{% endif %} + diff --git a/data/ui.yml b/data/ui.yml index dfb6e87ff8..d2a5e24987 100644 --- a/data/ui.yml +++ b/data/ui.yml @@ -101,6 +101,7 @@ parameter_table: see_preview_notice: See preview notice see_preview_notices: See preview notices type: Type + single_enum_description: Value products: graphql: reference: @@ -141,6 +142,25 @@ products: preview_notice_to_change: This API is under preview and subject to change works_with: Works with api_reference: REST API reference + enum_description_title: Can be one of + required: Required + headers: Headers + query: Query parameters + path: Path parameters + body: Body parameters + webhooks: + action_type_switch_error: There was an error switching webhook action types. + action_type: Action type + availability: Availability + webhook_payload_object: Webhook payload object + webhook_payload_example: Webhook payload example + rephrase_availability: + repository: Repositories + organization: Organizations + app: GitHub Apps + business: Enterprises + marketplace: GitHub Marketplace + sponsors_listing: Sponsored accounts footer: all_rights_reserved: All rights reserved terms: Terms diff --git a/lib/webhooks/index.js b/lib/webhooks/index.js index 9932cd0b3c..c6e1a96e2d 100644 --- a/lib/webhooks/index.js +++ b/lib/webhooks/index.js @@ -3,9 +3,92 @@ import path from 'path' import fs from 'fs' import walk from 'walk-sync' import { set } from 'lodash-es' + +import { allVersions } from '../all-versions.js' +import { readCompressedJsonFileFallback } from '../read-json-file.js' + const __dirname = path.dirname(fileURLToPath(import.meta.url)) const staticDir = path.join(__dirname, 'static') +const schemasPath = path.join(__dirname, 'static/decorated') +// cache for webhook data per version +const webhooksCache = new Map() +// cache for webhook data for when you first visit the webhooks page where we +// show all webhooks for the current version but only 1 action type per webhook +// and also no nested parameters +const initialWebhooksCache = new Map() + +// return the webhoook data as described for `initialWebhooksCache` for the given +// version +export async function getInitialPageWebhooks(version) { + if (initialWebhooksCache.has(version)) { + return initialWebhooksCache.get(version) + } + const allWebhooks = await getWebhooks(version) + const initialWebhooks = [] + + // The webhooks page shows all webhooks but for each webhook only a single + // webhook action type at a time. We pick the first webhook type from each + // webhook's set of action types to show. + for (const [key, webhook] of Object.entries(allWebhooks)) { + const actionTypes = Object.keys(webhook) + const defaultAction = actionTypes ? actionTypes[0] : null + + const initialWebhook = { + name: key, + actionTypes, + data: webhook[defaultAction], + } + + // remove all nested params for the initial webhooks page, we'll load + // them by request + if (initialWebhook.data.bodyParameters) { + initialWebhook.data.bodyParameters.forEach((bodyParam) => { + if (bodyParam.childParamsGroups) { + bodyParam.childParamsGroups = [] + } + }) + } + + initialWebhooks.push({ ...initialWebhook }) + } + initialWebhooksCache.set(version, initialWebhooks) + return initialWebhooks +} + +// returns the webhook data for the given version and webhook category (e.g. +// `check_run`) -- this includes all the data per webhook action type and all +// nested parameters +export async function getWebhook(version, webhookCategory) { + const webhooks = await getWebhooks(version) + return webhooks[webhookCategory] +} + +// returns all the webhook data for the given version +export async function getWebhooks(version) { + const openApiVersion = getOpenApiVersion(version) + if (!webhooksCache.has(openApiVersion)) { + const filename = `${openApiVersion}.json` + + // The `readCompressedJsonFileFallback()` function + // will check for both a .br and .json extension. + webhooksCache.set( + openApiVersion, + readCompressedJsonFileFallback(path.join(schemasPath, filename)) + ) + } + + return webhooksCache.get(openApiVersion) +} + +function getOpenApiVersion(version) { + if (!(version in allVersions)) { + throw new Error(`Unrecognized version '${version}'. Not found in ${Object.keys(allVersions)}`) + } + return allVersions[version].openApiVersionName +} + +// TODO: docs-eng#1937: delete this function export default function getWebhookPayloads() { // Compile contents of individual .payload.json files into a single // object, with versions as top-level keys. @@ -40,6 +123,7 @@ export default function getWebhookPayloads() { return payloads } +// TODO: docs-eng#1937: delete this function function formatAsJsonCodeBlock(payloadObj) { // Note the use of `data-highlight="json"`. This is important because // done like this, it tells the rehype processor to NOT bother syntax diff --git a/middleware/api/index.js b/middleware/api/index.js index f95df82537..833e6f0392 100644 --- a/middleware/api/index.js +++ b/middleware/api/index.js @@ -3,10 +3,12 @@ import { createProxyMiddleware } from 'http-proxy-middleware' import events from './events.js' import search from './search.js' +import webhooks from './webhooks.js' const router = express.Router() router.use('/events', events) +router.use('/webhooks', webhooks) // The purpose of this is for convenience to everyone who runs this code // base locally but don't have an Elasticsearch server locally. diff --git a/middleware/api/webhooks.js b/middleware/api/webhooks.js new file mode 100644 index 0000000000..3db0c3b60a --- /dev/null +++ b/middleware/api/webhooks.js @@ -0,0 +1,42 @@ +import express from 'express' +import { getWebhook } from '../../lib/webhooks/index.js' +import { allVersions } from '../../lib/all-versions.js' +import { defaultCacheControl } from '../cache-control.js' + +const router = express.Router() + +// Returns a webhook for the given category and version +// +// Example request: +// +// /api/webhooks/v1?category=check_run&version=free-pro-team%40latest +router.get('/v1', async function webhooks(req, res, next) { + if (!req.query.category) { + return res.status(400).json({ error: "Missing 'category' in query string" }) + } + if (!req.query.version) { + return res.status(400).json({ error: "Missing 'version' in query string" }) + } + + const webhookVersion = Object.values(allVersions).find( + (version) => version.version === req.query.version + )?.version + const notFoundError = 'No webhook found for given category and version' + + if (!webhookVersion) { + return res.status(404).json({ error: notFoundError }) + } + + const webhook = await getWebhook(webhookVersion, req.query.category) + + if (webhook) { + if (process.env.NODE_ENV !== 'development') { + defaultCacheControl(res) + } + return res.status(200).send(webhook) + } else { + res.status(404).json({ error: notFoundError }) + } +}) + +export default router diff --git a/middleware/contextualizers/webhooks.js b/middleware/contextualizers/webhooks.js index 6dc7591c74..d79a66872c 100644 --- a/middleware/contextualizers/webhooks.js +++ b/middleware/contextualizers/webhooks.js @@ -5,6 +5,7 @@ import { allVersions } from '../../lib/all-versions.js' let webhookPayloads = null +// TODO: docs-eng#1937: webhooks-delete-1937: delete this file export default function webhooksContext(req, res, next) { const currentVersionObj = allVersions[req.context.currentVersion] // ignore requests to non-webhook reference paths diff --git a/middleware/index.js b/middleware/index.js index e3132ca537..bee098fc2d 100644 --- a/middleware/index.js +++ b/middleware/index.js @@ -38,6 +38,7 @@ import triggerError from './trigger-error.js' import ghesReleaseNotes from './contextualizers/ghes-release-notes.js' import ghaeReleaseNotes from './contextualizers/ghae-release-notes.js' import whatsNewChangelog from './contextualizers/whats-new-changelog.js' +// TODO: docs-eng#1937: delete this line import webhooks from './contextualizers/webhooks.js' import layout from './contextualizers/layout.js' import currentProductTree from './contextualizers/current-product-tree.js' @@ -261,6 +262,7 @@ export default function (app) { // *** Preparation for render-page: contextualizers *** app.use(asyncMiddleware(instrument(ghesReleaseNotes, './contextualizers/ghes-release-notes'))) app.use(asyncMiddleware(instrument(ghaeReleaseNotes, './contextualizers/ghae-release-notes'))) + // TODO: docs-eng#1937: delete this line app.use(instrument(webhooks, './contextualizers/webhooks')) app.use(asyncMiddleware(instrument(whatsNewChangelog, './contextualizers/whats-new-changelog'))) app.use(instrument(layout, './contextualizers/layout')) diff --git a/pages/[versionId]/developers/webhooks-and-events/webhooks/webhook-events-and-payloads.tsx b/pages/[versionId]/developers/webhooks-and-events/webhooks/webhook-events-and-payloads.tsx new file mode 100644 index 0000000000..ec4230cf78 --- /dev/null +++ b/pages/[versionId]/developers/webhooks-and-events/webhooks/webhook-events-and-payloads.tsx @@ -0,0 +1,68 @@ +import { GetServerSideProps } from 'next' +import { getInitialPageWebhooks } from 'lib/webhooks' +import { getMainContext, MainContext, MainContextT } from 'components/context/MainContext' +import { + getAutomatedPageContextFromRequest, + AutomatedPageContext, + AutomatedPageContextT, +} from 'components/context/AutomatedPageContext' +import { WebhookAction } from 'components/webhooks/types' +import { Webhook } from 'components/webhooks/Webhook' +import { getAutomatedPageMiniTocItems } from 'lib/get-mini-toc-items' +import { AutomatedPage } from 'components/article/AutomatedPage' + +type Props = { + mainContext: MainContextT + automatedPageContext: AutomatedPageContextT + webhooks: WebhookAction[] +} + +export default function WebhooksEventsAndPayloads({ + mainContext, + automatedPageContext, + webhooks, +}: Props) { + const content = webhooks.map((webhook: WebhookAction, index) => { + return ( +
+ +
+ ) + }) + return ( + + + {content} + + + ) +} + +export const getServerSideProps: GetServerSideProps = async (context) => { + const req = context.req as object + const res = context.res as object + const currentVersion = context.query.versionId as string + const mainContext = await getMainContext(req, res) + const { miniTocItems } = getAutomatedPageContextFromRequest(req) + + // Get data for initial webhooks page (i.e. only 1 action type per webhook and + // no nested parameters) + const webhooks = (await getInitialPageWebhooks(currentVersion)) as WebhookAction[] + + // Build the minitocs for the webhooks page which is based on the webhook + // categories in addition to the Markdown in the webhook-events-and-payloads.md + // content file + const webhooksMiniTocs = await getAutomatedPageMiniTocItems( + webhooks.map((webhook) => webhook.data.category), + context + ) + webhooksMiniTocs && miniTocItems.push(...webhooksMiniTocs) + + return { + props: { + webhooks, + mainContext, + automatedPageContext: getAutomatedPageContextFromRequest(req), + }, + } +} diff --git a/tests/content/webhooks.js b/tests/content/webhooks.js index 0c7fe64887..1c03e60cbd 100644 --- a/tests/content/webhooks.js +++ b/tests/content/webhooks.js @@ -1,9 +1,10 @@ import { difference } from 'lodash-es' -import { getJSON } from '../helpers/e2etest.js' +import { get, getJSON } from '../helpers/e2etest.js' +import { SURROGATE_ENUMS } from '../../middleware/set-fastly-surrogate-key.js' import { latest } from '../../lib/enterprise-server-releases.js' import { allVersions } from '../../lib/all-versions.js' import getWebhookPayloads from '../../lib/webhooks' -import { jest } from '@jest/globals' +import { describe, expect, jest } from '@jest/globals' const allVersionValues = Object.values(allVersions) @@ -22,6 +23,66 @@ const ghaePayloadVersion = allVersionValues.find( (version) => version.plan === 'github-ae' ).miscVersionName +describe('webhooks middleware', () => { + test('basic get webhook', async () => { + const sp = new URLSearchParams() + // Based on live data which isn't ideal but it should rarely change at least. + // Just check that we find the webhook and that the result has the `category` + // field which all webhook types should have. + sp.set('category', 'branch_protection_rule') + sp.set('version', 'free-pro-team@latest') + const res = await get('/api/webhooks/v1?' + sp) + expect(res.statusCode).toBe(200) + const results = JSON.parse(res.text) + const actionTypes = Object.keys(results) + expect(actionTypes.length).toBeGreaterThan(2) + expect(Object.keys(results[actionTypes[0]]).includes('category')).toBeTruthy() + + // Check that it can be cached at the CDN + expect(res.headers['set-cookie']).toBeUndefined() + expect(res.headers['cache-control']).toContain('public') + expect(res.headers['cache-control']).toMatch(/max-age=[1-9]/) + expect(res.headers['surrogate-control']).toContain('public') + expect(res.headers['surrogate-control']).toMatch(/max-age=[1-9]/) + expect(res.headers['surrogate-key']).toBe(SURROGATE_ENUMS.DEFAULT) + }) + + test('get non-fpt version webhook', async () => { + const sp = new URLSearchParams() + sp.set('category', 'branch_protection_rule') + sp.set('version', 'enterprise-cloud@latest') + const res = await get('/api/webhooks/v1?' + sp) + expect(res.statusCode).toBe(200) + const results = JSON.parse(res.text) + const actionTypes = Object.keys(results) + expect(actionTypes.length).toBeGreaterThan(2) + expect(Object.keys(results[actionTypes[0]]).includes('category')).toBeTruthy() + + expect(res.statusCode).toBe(200) + }) + + test('unknown webhook category', async () => { + const sp = new URLSearchParams() + sp.set('category', 'no-such-category') + sp.set('version', 'free-pro-team@latest') + const res = await get('/api/webhooks/v1?' + sp) + + expect(res.statusCode).toBe(404) + expect(JSON.parse(res.text).error).toBeTruthy() + }) + + test('unknown version', async () => { + const sp = new URLSearchParams() + sp.set('category', 'branch_protection_rule') + sp.set('version', 'no-such-version') + const res = await get('/api/webhooks/v1?' + sp) + + expect(res.statusCode).toBe(404) + expect(JSON.parse(res.text).error).toBeTruthy() + }) +}) + +// TODO: docs-eng#1937: delete this test suite describe('webhook payloads', () => { jest.setTimeout(3 * 60 * 1000) diff --git a/tests/rendering/webhooks.js b/tests/rendering/webhooks.js index e418adbc9f..9bbd93aaed 100644 --- a/tests/rendering/webhooks.js +++ b/tests/rendering/webhooks.js @@ -1,11 +1,65 @@ import { jest } from '@jest/globals' import { getDOM } from '../helpers/e2etest.js' import { allVersions } from '../../lib/all-versions.js' +import { getWebhooks } from '../../lib/webhooks/index.js' describe('webhooks events and payloads', () => { jest.setTimeout(300 * 1000) - describe('rendering', () => { + test('loads webhook schema data for all versions', async () => { + for (const version in allVersions) { + const webhooks = await getWebhooks(version) + const webhookNames = Object.keys(webhooks) + const $ = await getDOM( + `/en/${version}/developers/webhooks-and-events/webhooks/webhook-events-and-payloads` + ) + const domH2Ids = $('h2') + .map((i, h2) => $(h2).attr('id')) + .get() + + webhookNames.forEach((webhookName) => { + expect(domH2Ids.includes(webhookName)) + }) + } + }) + + test('Non-GHES versions do not load GHES only webhook', async () => { + // available since 3.4, only in GHES (technically also GHAE which is based + // off of GHES) + const ghesOnlyWebhook = 'cache_sync' + + for (const version in allVersions) { + if (!version.includes('enterprise-server') && !version.includes('github-ae')) { + const $ = await getDOM( + `/en/${version}/developers/webhooks-and-events/webhooks/webhook-events-and-payloads` + ) + const domH2Ids = $('h2') + .map((i, h2) => $(h2).attr('id')) + .get() + + expect(domH2Ids.length).toBeGreaterThan(0) + expect(domH2Ids.includes(ghesOnlyWebhook)).toBe(false) + } + } + }) + + test('Webhooks events and payloads page has DOM markers needed for extracting search content', async () => { + const $ = await getDOM( + '/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads' + ) + const rootSelector = '[data-search=article-body]' + const $root = $(rootSelector) + expect($root.length).toBe(1) + + // on the webhooks page the lead is separate from the article body (unlike + // the REST pages for example) + const leadSelector = '[data-search=lead] p' + const $lead = $(leadSelector) + expect($lead.length).toBe(1) + }) + + // All webhook types don't yet have examples in the schema. + describe.skip('rendering', () => { test('every webhook event has at least one payload example', async () => { const versions = Object.values(allVersions).map((value) => value.version)
{`${t('name')}, ${t('type')}, ${t('description')}`}
+
+ +
+
+ {t('headers')}
+ {/* webhooks don't have a 'Parameters' table heading text so + we adjust the size of the body params heading in that case */} + {t('body')}