45 lines
2.2 KiB
Markdown
45 lines
2.2 KiB
Markdown
# Webhooks
|
|
|
|
## About this directory
|
|
|
|
* `lib/webhooks/index.js` is human-editable.
|
|
* `lib/rest/static/**/*.payload.json` are manually edited and copied. When a new GHES release is created, the static webhook files from the previous version's directory are copied to a new version directory.
|
|
|
|
## Editable files
|
|
|
|
* `lib/webhooks/index.js` consumes the static JSON files in `lib/webhooks/static` and exports the data used by the REST middleware contextualizer.
|
|
|
|
## Static files
|
|
|
|
Generated by `script/rest/update-files.js`:
|
|
|
|
* `lib/rest/static/dereferenced` - dereferenced OpenAPI schema file for each version of GitHub
|
|
* `lib/rest/static/decorated` - files generated from the dereferenced OpenAPI schema with the Markdown descriptions rendered in HTML
|
|
|
|
## Rendering docs
|
|
|
|
When the server starts, `middleware/contextualizers/webhooks.js` accesses the data exported from the static webhook JSON files, fetches the data for the current version and requested path, and adds it to the `context` object. The added property is:
|
|
|
|
* `req.context.webhookPayloadsForCurrentVersion` - all webhook payloads with a version matching the current version
|
|
|
|
Markdown files in `content/developers/webhooks-and-events/webhooks/webhook-events-and-payloads.md` use Liquid to display the webhook payloads in `req.context.webhookPayloadsForCurrentVersion`. For example `{{ webhookPayloadsForCurrentVersion.user.created }}` references the payload file `user.created.payload.json` for the version being viewed.
|
|
|
|
**Note** Payload files either contain the webhook action type or no action type at all. For example, `user.created.payload.json` is the webhook `user` with the action type of `created`. Not all webhooks have action types. If a file exists with no action type (e.g., `user.payload.json`) and the action types (e.g., `user.created.payload.json` and `user.deleted.payload.json`), the entry in the context for the file with no action type will be `default`. For example, for the three static file mentioned, the object would be:
|
|
|
|
```
|
|
{
|
|
user: {
|
|
default: "STRING VALUE",
|
|
created: "STRING VALUE",
|
|
deleted: "STRING VALUE"
|
|
}
|
|
}
|
|
```
|
|
|
|
If no action types exist, and only `user.payload.json` exists, the object would be:
|
|
|
|
```
|
|
{
|
|
user: "STRING VALUE"
|
|
}
|