Push Kirby hook events to HTTP endpoints.
The Kirby webhooks-plugin will send a POST
request to the configured HTTP endpoints
holding a application/json
body with the hook name, the user-data of the user who
triggered the hook and the actual page data including a diff with the old page data.
hook
holds the name of the triggered hook.host
holds the hostname from where the request originated.user
holds the data of the user who triggered the hook.data
holds the new page data.diff
holds the page's old page data which changed.
Example of the Request-Body (shortened)
{
"hook": "panel.page.update",
"host": "127.0.0.1",
"user": {
"username": "user",
"email": "user@domain.tld",
"language": "en",
"role": "admin",
"firstname": "first",
"lastname":" last",
"history": []
},
"data":{
"id": "page/subpage",
"title": "Subpage",
"content": {
"name": "New name!"
}
},
"diff": {
"content": {
"name": "Old name."
}
}
}
Choose your preferred installation method below and enable the plugin in the configuration.
kirby plugin:install thasmo/kirby.webhooks
{
"name": "my-kirby-installation",
"require": {
"mnsami/composer-custom-directory-installer": "1.0.*",
"thasmo/kirby.webhooks": "0.1.0"
},
"repositories": [
{
"type": "package",
"package": {
"name": "thasmo/kirby.webhooks",
"version": "0.1.0",
"source": {
"type": "git",
"url": "https://github.com/thasmo/kirby.webhooks.git",
"reference": "v0.1.0"
}
}
}
],
"extra": {
"installer-paths": {
"./site/plugins/webhooks": ["thasmo/kirby.webhooks"]
}
}
}
Download the latest release and unpack it to site/plugins/webhooks
.
webhooks required, default: false
Enable the webhooks-plugin.
c::set('webhooks', true);
webhooks.endpoints required default: null
Define HTTP endpoints.
c::set('webhooks.endpoints', [
'http://domain-1.com/all-events/',
'http://domain-2.com/page-events-only/' => ['panel.page'],
'http://domain-3.com/user-events-only/' => ['panel.user'],
]);
webhooks.blacklist optional, default: ['password', 'secret']
Set property-names which should not be passed to the endpoints.
c::set('webhooks.blacklist', ['password', 'secret', 'email']);